4

我的 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

谢谢!

4

2 回答 2

1

有一种方法可以做到这一点,通过定义回调路径和提供者的名称。

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

希望能帮助到你

于 2015-04-30T11:46:31.587 回答
0

如果你想对这两个用例都使用omniauth,你可能无法在没有重大覆盖的情况下这样做,因为它们会发生冲突。您是否考虑过使用不同的 twitter gem 对 twitter 进行身份验证以发布推文?

于 2013-07-26T13:20:18.780 回答