4

Rails アプリケーションでは、2 つの異なる目的で Twitter Oauth を 2 回使用する必要があります。1 つ目は一般的なユーザーのサインインです。2 つ目は、ツイートを事前にスケジュールできるようにアカウントを追加するためのものです。例としてフートスイートを考えてみてください。Facebook でログインできるほか、さまざまな Facebook アカウントを接続できます。これには、2 つの個別のコールバックが必要です。

独自の関数でコールバックを作成するには、それぞれ別のコールバック URL を持つ 2 つの異なるアプリケーションを作成するだけでよいと考えました。

ただし、omniauth.rb ファイルでは、twitter プロバイダーに接続する方法は 1 つしかありません。

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 コールバックを使用する解決策を見つけた人はいますか? FacebookやGoogle Plusなど、さまざまな目的で2回使用する必要があるOauthのソリューションを見てうれしい

ありがとう!

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 に答える