我正在使用shopify_app gem with 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:已启用
应用程序网址: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 应该是 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
关于ruby-on-rails - 更改 shopify_app gem 的引擎路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44469677/