18

KoalaRuby on Rails アプリケーションで gem を使用しています

そして、Koala を介してデータに使用しているモデルに次のコードがあります。

@graph = Koala::Facebook::GraphAPI.new(token_secret)
friends = @graph.get_connections("me", "friends")

ログイン時に保存された私のテーブルのtoken_secretフィールドから来ます。users

正常に動作しますが、数分後に次のようになります。

Koala::Facebook::APIError (OAuthException: Error validating access token: Session has expired at unix time 1327438800. The current unix time is 1327442037.):

のメソッドを使用してフロントでこのトークンを更新する方法を見つけましたFacebook JS SDKが、友人のリストを取得しているこのメソッドはコントローラーで呼び出されます。

token_secretKoala を使用して更新するにはどうすればよいですか? これは可能ですか?

4

2 に答える 2

0

Facebook Web サイト アプリケーションの oauth_token を取得しようとしている場合は、リダイレクト ベースの Oauth プロセスを使用する必要があります。少し複雑です。キャンバス アプリの場合は、より簡単です。キャンバス アプリには引き続きリダイレクト ベースのプロセスを使用できますが、signed_request から解析することをお勧めします。

ユーザーが Facebook でアプリをロードするたびに、「signed_request」パラメーターを使用して最初のページにアクセスします。この暗号化された文字列は、コントローラーで Koala オブジェクトを使用して解析する必要があります。その結果、約 2 時間有効な新しい oauth_token を取得できます。これが私のやり方です。

 #Create a new koala Oauth object.
 oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET) 

 #Get the new oauth_token from the signed request.
 your_new_oauth_token = oauth.parse_signed_request(params[:signed_request])["oauth_token"]
于 2012-02-18T21:55:44.377 に答える