Shopify 应用程序 - 在 Rails 应用程序上使用带有 Ruby 的脚本标签

Shopify App - Using Script Tags with Ruby on Rails Application

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

我发现添加了脚本标签的 js 文件只有在线托管时才有效,所以我将 js 文件上传到 google 驱动器。我的 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],我相信脚本标记可能需要返回有效的响应才能通过。

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

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

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 文件 - 如果您使用 localhost 进行开发,请查看 grok。

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

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

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

祝你好运,先生,