更改 shopify_app gem 的引擎路线

Change Engine routes for shopify_app gem

我正在使用 shopify_app gem 和 rails 5. 我希望 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:已启用

应用Url:https://salebait.com/settings

白名单重定向Url:https://salebait.com/shopify_app/auth/shopify/callback

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

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

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

谢谢。

如果其他人正在寻找解决方案,请看这里: 我在“/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