我正在设计一个shopify应用程序,使客户可以通过手机购买产品。该方案是客户需要能够使用omniauth注册,然后他们可以从应用程序获取产品信息。但是,在任何客户从商店获取产品信息之前,我的shopify应用程序应首先使用omniauth与店主进行身份验证。
现在的问题是设计将修改omniauth默认身份验证策略。如果我使用shopify_api,我通过路径auth / shopify认证,它可以在没有设计安装的情况下工作。如果安装了devise,它会将auth / shopify重定向到omniauth / shopify。我发现这条路径是由设计生成的。如何跳过设计并使用原始的omniauth路径?谢谢。
答案 0 :(得分:0)
Devsie a good tutorial介绍了如何将omniauthable
从您的设计模型中分离出来。这将允许您配置自己的omniauth设置。
为config/initializers/omniauth.rb
中的两个提供商设置提供商并从devise.omniauth
删除conifg/initializers/devise.rb
后,您需要设置路由以处理来自devise_scope :user do
get "/auth/:action/callback", to: 'users/omniauth_callbacks', constraints: { action: /facebook/ }
end
get 'auth/:action/callback' => 'another_controller', constraints: { action: /shopify/ } # connections
的响应OAuth不同。
<强>的routes.rb 强>
class AnotherController
def shopify
auth_hash = request.env['omniauth.auth']
shop = auth_hash[:uid]
token = auth_hash[:credentials][:token]
ShopifyAPI::Session.temp("#{shop}.myshopify.com", token) do
current_shop = ShopifyAPI::Shop.current
...
end
end
end
然后在 another_controller.rb
中ToString()
希望这有帮助。