0

Rails 3アプリでdevise、omniauth、omniauth-twitter、twitter gemを使用しています。ユーザーがサインアウトすると、twitter gem の構成も削除されるようにしたいと考えています。「twitter gem の設定」と言うとき、私が言及しているのは次のことです。

Twitter.configure do |config|
  config.consumer_key = YOUR_CONSUMER_KEY
  config.consumer_secret = YOUR_CONSUMER_SECRET
  config.oauth_token = YOUR_OAUTH_TOKEN
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

そうしないと、別のユーザーが同じコンピューターからアプリにログオンしたが、ユーザー アカウントを持っていない場合、前のユーザーの twitter 情報が表示されます。を呼び出すことで構成を削除できると思います

Twitter.reset

私の質問は、それを配置するのに最適な場所はどこでしょうか? また、それがユーザーの Twitter 設定を削除する最良の方法ではない場合、どうすればよいですか?

ありがとうございます。詳細が必要な場合はお知らせください。

4

2 に答える 2

0

これは機能しているようです。

ユーザーがサインイン/app/controllers/application_controller.rb/アウトするときに、デバイスがユーザーに送信するデフォルトのルートをリダイレクトできます。これを配置するのが「適切な」場所かどうかはわかりませんが、妥当なようです。

class ApplicationController < ActionController::Base
  protect_from_forgery

  def after_sign_in_path_for(resource_or_scope)
    if current_user.authentications.find_by_provider("twitter")
      ckey= YOUR_APPS_CONSUMER_KEY
      csecret= YOUR_APPS_CONSUMER_SECRET
      auth = current_user.authentications.find_by_provider("twitter")
      atoken = auth.token
      asecret = auth.secret
      Twitter.configure do |config|
        config.consumer_key = ckey
        config.consumer_secret = csecret
        config.oauth_token = atoken
        config.oauth_token_secret = asecret
      end
    end

    authentications_path
  end

  def after_sign_out_path_for(resource_or_scope)
      Twitter.reset
      authentications_path
  end


end

これauthentications_pathは、認証と関連するものをテストするために使用しているページです。どこにでもリダイレクトできます。ユーザーがアカウントをリンクすると、oauth トークンとシークレットが認証オブジェクトに保存されます。これは、Twitter gem の特定の側面にアクセスするために必要になります。

これを答えとしてマークするのを少し待ちます。誰かがより良い解決策を持っているかどうかを確認してください。

于 2012-04-29T19:10:52.127 に答える
0

構成をアプリケーション固有 (グローバル) とクライアント固有の設定に分割できます。この twitter gem wiki ページは、これについてうまく説明しています。

于 2012-04-28T15:49:31.110 に答える