web-dev-qa-db-ja.com

有効期限が切れた後にFacebook OAuth2アクセストークンを更新する正しい方法は何ですか?

私が理解しているように、これはOAuth2 APIを簡単に使用した新しいFacebook iframeキャンバスアプリの基本的なプロセスです。

  1. アプリの認証URLにリダイレクトする(またはユーザーにリンクをクリックさせる)
  2. ユーザーが承認し、コールバックURLにリダイレクトされます
  3. コールバックは「code」パラメーターを使用してアクセストークンを取得します
  4. アクセストークンは、情報をプルまたはプッシュするためにGraph APIで使用されます

問題は、アクセストークンが比較的早く期限切れになり、「更新」する必要があることです。したがって、私の質問は1)トークンを使用しようとしてエラーを取得する以外に、トークンの期限切れをどのように検出しますか?および2)新しいトークンを取得するためのベストプラクティスは何ですか?

現在、アクセストークンを使用してユーザーの情報を取得しようとしてエラーが発生したことを検出した後、承認URLに再度リダイレクトします-既に空白ページが点滅し、アプリのコールバックにリダイレクトされているため、承認URLにリダイレクトします新しいトークンを取得します。それはとても不格好なので、これが適切な方法だとは信じられません。

53
mtjhax
  1. Cookieが有効であるかどうかを確認する唯一の方法は、Cookieを使用し、有効期限が切れている場合にエラーをキャッチすることです。トークンが有効であるかどうかを確認するためのポーリング方法などはありません。

  2. 新しいトークンを取得するには、ユーザーを再度認証ページにリダイレクトします。彼らは既にあなたのアプリを承認しているので、彼らはすぐにあなたのアプリにリダイレクトされ、あなたは新しいトークンを手に入れます。既に許可されているため、許可を求められません。

要するに、これにはトリックはありません。すでに正しくやっています。

41
Nathan Totten

最近、facebookはアクセストークンにいくつかの変更を加え、定期的に更新できるようにしました。

https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN 

詳細については、こちらを確認してください。 https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal

26
logan

Facebookは、「代理」モードでアクセストークンを更新する機能を削除しました。最善かつ簡単な方法は、ユーザーをFacebookのログインページにリダイレクトして、アプリを再認証することです。検索 facbook doc here

4
Narendra Singh
//you just need more step because the access token you are getting will expire in 1 hour
    //you can overcome this in step 5

    1-Redirect to (or have user click link to) app's authorization URL
2-User authorizes and is redirected to your callback URL
3-Callback uses "code" parameter to get a access token
4-Access token is used with Graph API to pull or Push information
    5-exchange short-lived access token you just got with 60 day access token
    https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN
    6-after 60 day the user must login again to your app and the steps from 1-5 will be repeated.
    --the real problem you will face is how to make the user visit your app page again
4
ashraf mohammed

ユーザーがアプリケーションを既に承認しており、アクセストークンの有効期限が切れている場合。ユーザーを再び認証ページにリダイレクトできます。ただし、oauthダイアログは、ユーザーがアプリケーションを既に承認しているため表示されません。彼は、使用したredirect_urlパラメーターにリダイレクトします。

2
murnax