5

Facebook が offline_access パーミッションを削除しているので、新しいシステムを使用するように Web サイトを移行したいと考えています。

Facebook の Web サイトでこのドキュメントを見つけました: https://developers.facebook.com/roadmap/offline-access-removal

ただし、サーバー側認証で誰かを処理すると、次の応答が返されます。

access_token => BLAHBLAHBLAHdontusemytokensilly
expires => 4992

(そのドキュメントの) アクセス ポイントを使用してアクセス トークンを数時間以上延長しようとすると、次のように返されます。

access_token => BLAHBLAHBLAHdontusemytokensilly
expires => 4990

そのドキュメントによると、サーバー側の OAuth は 60 日間有効なトークンを取得する必要がありますが、なぜそれが返されないのかわかりません。

2 時間ごとに OAuth リダイレクトを介してユーザーを送信したくありません。

何か案は?ありがとう!

アップデート

リクエストに応じて、これが私が取っているフローです(ブラウザで):

最初に、ユーザーをここにリダイレクトしました:

https://www.facebook.com/dialog/oauth?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&scope=user_about_me%2Cuser_events%2Cuser_interests%2Cuser_likes%2Cfriends_likes%2Cuser_location%2Cuser_status%2Cuser_subscriptions%2Cfriends_subscriptions %2Cemail%2Ccreate_event%2Cpublish_stream%2Crsvp_event%2Cpublish_actions%2Cuser_actions.music%2Cfriends_actions.music%2Cuser_actions.news%2Cfriends_actions.news%2Cuser_actions.video%2Cfriends_actions.video%2Cmanage_pages

これにより、ユーザーは次の場所にリダイレクトされます。

http://localhost/user-social/facebook/redirect?code=BLAHBLAHBLAHsomeawesomecode#_=_

次に、次のようにアクセス トークンを要求しました。

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&code=BLAHBLAHBLAHsomeawesomecode

私はFacebookからこの安息を受け取ります:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=4057

これは明らかに短命のトークンです。Facebook のドキュメント (上記) によると、(サーバー側の OAuth を使用しているため) 有効期間の長いトークンを受け取る必要がありました。

ただし、寿命が短いため、寿命の長いトークンと交換しようとしました。

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&grant_type=fb_exchange_token&fb_exchange_token=BLAHBLAHBLAHdontusemytokensilly

これはFacebookが返したものです:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=3967

両方のリクエストで同じ access_token が返されています。

更新 2

上記のアクセス トークンをFacebook Debuggerに入力すると、次のような結果が返されました。

App ID: 
BLAHBLAH
User ID:    
211800900 : David Barratt
Issued: 
Unknown
Expires:    
1347303600 (in 40 minutes)
Valid:  True
Origin: Web
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me user_actions.music user_actions.news user_actions.video user_events user_interests user_likes user_location user_status user_subscriptions video_upload

更新 3

すべての権限を削除し、アプリを再承認した後 (@phwd が提案したように)。Facebook API はこれを返します。

access_token=BLAHBLAHBLAHdontusemytokensilly

これは、長寿命の access_token が返されたことを意味しますか? もしそうなら、有効期限はどこですか?

更新 4

上記の access_token を Facebook Debugger で実行すると、次の結果が得られます。

App ID: 
BLAHBLAH
User ID:    
211800900 : David Barratt
Issued: 
1347309538 (39 minutes ago)
Expires:    
Never
Valid:  True
Origin: Web
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me user_actions.music user_actions.news user_actions.video user_events user_interests user_likes user_location user_status user_subscriptions video_upload

これで元の問題は解決したように見えますが、access_tokens が規定の 60 日間持続するのではなく、無期限になっているのは奇妙です。

なぜそうなるのかについてのアイデアはありますか?

4

2 に答える 2

2

あなたがそれを知っているかどうかはわかりません。ただし、ユーザーがアプリケーションに何回ログインしても、アクセス トークンは 1 日に 1 回だけ更新されます。

参照: https://developers.facebook.com/roadmap/offline-access-removal/

于 2012-09-10T19:35:45.330 に答える
1

Facebook が offline_access パーミッションを削除しているので、新しいシステムを使用するように Web サイトを移行したいと考えています。

offline_accessアプリの詳細設定で「権限の削除」が有効になっていることを確認してください

高度な設定

そうした場合、バグに遭遇している可能性がありますhttps://developers.facebook.com/bugs/378106708911903

于 2012-09-10T19:41:53.673 に答える