我正在尝试熟悉使用脚本标签的概念。我正在制作一个 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/