javascript - Shopify 应用程序 - 在 Ruby on Rails 应用程序中使用脚本标签

标签 javascript ruby-on-rails shopify

我正在尝试熟悉使用脚本标签的概念。我正在制作一个 ruby​​ on rails 应用程序,当客户访问页面时,它会做一些简单的事情,比如“嗨”警报。我正在本地服务器上测试这个公共(public)应用程序,并且安装了 shopify_app gem。该应用程序已通过身份验证,我可以访问商店的数据。我查看了有关使用脚本标签的 Shopify API 文档,并查看了 Shopify 在 GitHub 上的 Shopify Embedded App 示例。该文档详细介绍了脚本标签的属性,并给出了定义了属性的脚本标签示例,但没有说明将脚本标签放置在应用程序中的什么位置,也没有说明如何配置环境以便 js 文件在应用程序中。脚本标签将通过。

我发现添加了 script 标签的 js 文件只有在 js 文件在线托管时才有效,所以我将 js 文件上传到 google drive。我的 HomeController(应用程序的默认页面)的索引操作中有脚本标记的代码。这是我正在使用的代码:

def index
  if response = request.env['omniauth.auth']
  sess = ShopifyAPI::Session.new(params[:shop], response[:credentials][:token])
  session[:shopify] = sess

  ShopifyAPI::Base.activate_session(sess)
  ShopifyAPI::ScriptTag.create(
       :event => "onload", 
       :src => "https://drive.google.com/..."
  )
end

我认为问题可能与 request.env 有关。响应未被读取为 request.env[omniauth.auth] 并且我相信脚本标记可能需要返回有效的响应才能通过。

我上面尝试的方法来自本主题给出的第二个答案:How to develop rails app for shopify with ScriptTags .

第一个答案建议使用此代码: ShopifyAPI::Base.site = token

s = ShopifyAPI::ScriptTag.create(:events => "onload",:src => "your javascript url")

但是,它没有说明将两行代码放在 Rails 应用程序中的什么位置。我尝试将第二行放在我的 rails 应用程序的 js 文件中,但它不起作用。

我不知道我遇到问题是因为我在本地服务器上运行该应用程序,还是我的应用程序配置中缺少某些内容。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

尝试在 config/initializers/shopify_app.rb 中加入类似这样的内容

ShopifyApp.configure do |config|
  config.api_key = "xxx-xxxx-xxx-xxx"
  config.secret = "xxx-xxxx-xxx-xxx"
  config.scope = "read_orders, read_products"
  config.embedded_app = true
  config.scripttags = [
  {event:'onload', src: 'https://yourdomain.herokuapp.com/javascripts/yourjs.js'}
  ]
end

是的,您是正确的,您需要包含公开可用的脚本标记的 js 文件 - 如果您使用本地主机进行开发,请查看 ngrok

请确保您的回调在与 Shopify API 交互时使用 SSL(即使用 https://localhost/配置您的应用作为 Shopify 应用设置中的回调设置)。我遇到了使用自签名 SSL 证书在本地将 thin 配置为 Web 服务器的麻烦。

通过正确的设置,您应该能够调试响应未通过 omniauth 检查的原因。

我是 Shopify API 的新手,但不是 Rails 的新手。他们的文档还有很多不足之处。

祝你好运

关于javascript - Shopify 应用程序 - 在 Ruby on Rails 应用程序中使用脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005905/

相关文章:

javascript - 通过 javascript 设置 Shopify 选项选择器/更改所选变体的值

javascript - 如何使下拉菜单响应式?

C# 在 WebBrowser 中调用 JavaScript

javascript - 如何使用 javascript 删除 css 类?

ruby-on-rails - db :migration 后未生成 Ruby on Rails id 列

shopify - 使用 Shopify 如何在注册时捕获客户地址并将其保存为默认的账单和送货地址?

shopify - 在管理仪表板中添加外部链接

javascript - 如何根据给定值在Javascript中分配动态范围值?

javascript - 语法错误: Unexpected token in OpenCart site

ruby-on-rails - 使用 uuid-ossp 在 Rails 中将模型 id 更改为 uuid