私が理解しているように、これはOAuth2 APIを簡単に使用した新しいFacebook iframeキャンバスアプリの基本的なプロセスです。
問題は、アクセストークンが比較的早く期限切れになり、「更新」する必要があることです。したがって、私の質問は1)トークンを使用しようとしてエラーを取得する以外に、トークンの期限切れをどのように検出しますか?および2)新しいトークンを取得するためのベストプラクティスは何ですか?
現在、アクセストークンを使用してユーザーの情報を取得しようとしてエラーが発生したことを検出した後、承認URLに再度リダイレクトします-既に空白ページが点滅し、アプリのコールバックにリダイレクトされているため、承認URLにリダイレクトします新しいトークンを取得します。それはとても不格好なので、これが適切な方法だとは信じられません。
Cookieが有効であるかどうかを確認する唯一の方法は、Cookieを使用し、有効期限が切れている場合にエラーをキャッチすることです。トークンが有効であるかどうかを確認するためのポーリング方法などはありません。
新しいトークンを取得するには、ユーザーを再度認証ページにリダイレクトします。彼らは既にあなたのアプリを承認しているので、彼らはすぐにあなたのアプリにリダイレクトされ、あなたは新しいトークンを手に入れます。既に許可されているため、許可を求められません。
要するに、これにはトリックはありません。すでに正しくやっています。
最近、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
Facebookは、「代理」モードでアクセストークンを更新する機能を削除しました。最善かつ簡単な方法は、ユーザーをFacebookのログインページにリダイレクトして、アプリを再認証することです。検索 facbook doc here
//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
ユーザーがアプリケーションを既に承認しており、アクセストークンの有効期限が切れている場合。ユーザーを再び認証ページにリダイレクトできます。ただし、oauthダイアログは、ユーザーがアプリケーションを既に承認しているため表示されません。彼は、使用したredirect_urlパラメーターにリダイレクトします。