2010-12-16 3 views
0

現在、私はomniauthを使用してユーザーを認証しています。これは私のセッションコントローラで次のようになりますし、うまく機能:この後Twitter宝石とOmniauth宝石を使ってユーザーがすでにログインしているときに、ユーザーのアクセストークンを取得するにはどうすればよいですか?

def create 
    auth = request.env['omniauth.auth'] 
    unless @auth = Authentication.find_from_hash(auth) 
    # Create a new user or add an auth to existing user, depending on 
    # whether there is already a user signed in. 
    @auth = Authentication.create_from_hash(auth, current_user) 
    end 
    # Log the authorizing user in. 
    self.current_user = @auth.user 

    redirect_to authentications_url, :notice => "You've signed in!" 
end 

を、私は私の認証テーブルにTwitterのUIDを保存した(私もLinkedInの、Facebookのを使用)、私はさえずりセッションと思いもう閉店した。

Twitterの宝石を使用できるように認証する方法を教えてください。オムニバスのコールバックの直後にそれを呼んでいたのであれば、このようなものでなければならないと思います。

token = auth['credentials']['token'], 
    secret = auth['credentials']['secret'] 
    Twitter.oauth_token = token 
    Twitter.oauth_token_secret = secret 

私は明らかにセッションを再起動し、正しい場所にトークンとシークレットを配置する必要があります。これを行う方法をどのように作成できますか?

答えて

2

あなたの認証テーブル(Authentication.create_from_hash)にTwitterによって提供されたトークンと秘密の両方を保存する必要があります。限り、あなたはそれをやっているように、これは動作するはずです:あなたの認証テーブルにあなたがtokentoken_secretとしてツイッタートークンとシークレットを保存するだけでなく、twitter

+0

として、プロバイダを保存することを想定しています

twitter_credentials = current_user.authorizations.find_by_provider(:twitter) Twitter.oauth_token = twitter_credentials.token Twitter.oauth_token_secret = twitter_credentials.token_secret 

を#の定義されていないメソッド 'authorizations ' – Rob

関連する問題