【问题标题】:Change Engine routes for shopify_app gem更改 shopify_app gem 的引擎路线
【发布时间】:2017-06-10 04:53:57
【问题描述】:

我正在使用带有 rails 5 的 shopify_app gem。我希望 shopify_app 从嵌套路由中工作。例如:/shopify_app/login 或 '/shopify_app/auth/shopify/callback'。

我尝试了 gem 文档中给出的解决方案,并将这些行放在我的 routes.rb 文件中:

mount ShopifyApp::Engine, at: 'shopify_app'  
get '/shopify_app' => 'settings#index'

但它并没有以这种方式工作。所以我四处搜索并找到了一个解决方案,通过在omniauth初始化程序中进行一些更改来使其工作。

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :shopify, ShopifyApp.configuration.api_key, ShopifyApp.configuration.secret, scope: ShopifyApp.configuration.scope, callback_path: '/shopify_app/auth/shopify/callback'
end

以下是应用设置:

嵌入式应用 SDK:已启用

应用网址:https://salebait.com/settings

列入白名单的重定向网址:https://salebait.com/shopify_app/auth/shopify/callback

现在的问题是,当我第一次安装我的应用程序时,它会在安装后重定向到我网站的主页 (https://salebait.com),但它应该在商店管理员中打开 https://salebait.com/settings 页面。如果我关闭浏览器或从商店注销并再次返回应用程序,它会转到 https://salebait.com/login 这不是一个有效页面,因为所有应用程序路由都包含在 /shopify_app/ 中,因此应用程序的登录 URL 应该是 @ 987654329@。 然后我必须手动点击应用程序的登录 URL 才能使其工作。

请提出一些解决方案,使我的应用程序路由顺利运行。

编辑:如果尝试在另一个浏览器中打开应用程序,应用程序将重定向到错误的登录页面。这是错误屏幕:

谢谢。

【问题讨论】:

  • 对我来说效果很好。该应用程序根据您提供的 URL 正确安装和重定向。但是,您的应用程序中存在错误,假设存在一些实际上不存在的资产。那里有一些防御性编码,你可能会参加比赛。 sale_bait_common_elems_asset = ShopifyAPI::Asset.find('sn-ps/sale_bait_common_elems.liquid', :params => {:theme_id => shop.active_theme})
  • 嗨@DavidLazar,当您安装该应用程序时,它是否将您重定向到shopify 商店管理员并向您显示应用程序设置?还是只发给salebait.com?退出后可以重试吗?
  • 正如我所提到的。流量一切正常。发生的唯一错误是您在应用程序中做出的假设,即查找的资源会存在。如果不存在,则您未能捕获 404 异常,因此事情爆炸了。
  • 嗨@DavidLazar,很抱歉再次打扰您。请问您可以尝试重新安装应用程序吗?我现在已经删除了 404 错误。所以再一次,问题是,应用程序安装得很好,但是当我在另一个浏览器中打开我的商店并尝试访问该应用程序时,它重定向到错误页面。添加有问题的错误屏幕。谢谢你的帮助!!

标签: ruby-on-rails routes shopify


【解决方案1】:

如果其他人正在寻找解决方案,这里是: 我在“/shopify_app”命名空间下安装了 shopify_app 引擎。但它是 gem 的默认命名空间,因此它不会覆盖默认路由。

所以我将 shopify_app 命名空间更改为“/app”,并且运行顺利。

mount ShopifyApp::Engine, at: 'app'  
get '/app' => 'settings#index'

还更改了 Omniauth 构建器和应用设置中的路径。

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :shopify, ShopifyApp.configuration.api_key, ShopifyApp.configuration.secret, scope: ShopifyApp.configuration.scope, callback_path: '/app/auth/shopify/callback'
end

【讨论】:

  • 感谢您回来并添加您的解决方案。我今天找到了。
猜你喜欢
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
相关资源
最近更新 更多