我的rails应用程序需要两次使用Twitter Oauth用于两个不同的目的。第一个是典型的用户登录。第二个是添加帐户,以便可以提前安排推文。以Hootsuite为例。您可以使用Facebook登录以及连接各种Facebook帐户。这需要两个单独的回调。
为了使回调具有独特的功能,我想我可以创建两个不同的应用程序,每个应用程序都有一个单独的回调URL。
但是,在omniauth.rb文件中,只有一种方法可以连接到twitter提供程序。
Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"]
end
不能像这样重复:
Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"]
end
Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTERUSER_KEY"], ENV["TWITTERUSER_SECRET"]
end
因为无法区分使用哪个回调。我没有找到一种方法来提供提供者':twitter2',例如因为它内置于Omniauth。
有没有人找到在同一个应用程序中使用多个Twitter回调的解决方案?很高兴看到任何需要两次用于不同目的的Oauth解决方案,例如Facebook或Google Plus
谢谢!
答案 0 :(得分:0)
如果你想在两个用例中使用omniauth,你可能无法在没有重大覆盖的情况下执行此操作,因为它们会发生冲突。您是否考虑使用不同的Twitter gem来通过Twitter进行身份验证以发布推文?
答案 1 :(得分:0)
通过为提供者定义回调路径和名称,可以做到这一点。
Rails.application.middleware.use OmniAuth::Builder do
provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"], callback_path: "/omniauth/twitter1/callback", name: "twitter1"
provider :twitter, ENV["TWITTERUSER_KEY"], ENV["TWITTERUSER_SECRET"], callback_path: "/omniauth/twitter2/callback", name: "twitter2"
end
然后您使用该名称来呼叫一个或另一个提供商,例如www.mywonderfulwebsite.com/omniauth/twitter1
希望有所帮助