2

状況はまだ不明です。2012 年 7 月 5 日以降、アクセス トークンに関連付けられているユーザーが Facebook からログアウトした場合、デスクトップ アプリケーションは Facebook データにアクセスできますか? ここで話しているのは、オフライン アクセスを完全に削除することですか、それとも単にオフライン アクセスを 60 日間制限することですか?

ドキュメント - https://developers.facebook.com/roadmap/offline-access-removal/は明確な答えを出していません (IMHO)。引用: 「移行設定が有効になると、デスクトップ アプリケーションは、より長い有効期限を持つユーザー access_tokens を自動的に取得します。ただし、ユーザーが再度アプリにログインしない限り、有効期間が長いユーザー access_token を取得する方法はありません。」</p>

4 月 30 日現在、デスクトップ アプリケーションの「offline_access」パーミッションでアクセス トークンをリクエストできます (URL を使用: https://graph.facebook.com/oauth/authorize?client_id=APPLICATION_ID&redirect_uri=http://www.facebook. com/connect/login_success.html&scope=manage_pages,read_stream,publish_stream,offline_access ) . そして、すべてがうまくいきます。ユーザーがログアウトした場合でも。アプリケーションに対して「offline_access 権限の削除」が有効になっているにもかかわらず。

あなたの答えは非常に高く評価されます。

4

1 に答える 1

2

これらの変更に対応するためのパッチが完成しました。少なくとも私の経験では、アクセス トークンの更新がすべてを Javascript SDK に変更し、ブラウザーのログイン状態に依存するのと同じくらい簡単な Web アプリ内で作業していました。これは、サーバー側で保存された有効期限の長いアクセス トークンをすべてのアクションでクロスチェックして、それがまだ有効かどうかを確認するよりも、はるかに論理的なアプローチのように思えました。

基本的に、デスクトップの実装で起こることは、デフォルトでアクセス トークンの有効期間が長くなりますが、60 日間の期間の終わりに更新が必要になることです。Facebook でアクセス トークンの有効性を確認してからアクションを実行する (または試行してプロンプトで失敗する) ロジックをアプリに用意し、access_token の有効期限が切れている場合はユーザーにログインして再検証するように求める必要があります。このロジックが整っている限り、有効期限が切れたアクセス トークンによって再検証がトリガーされます。

アプリが有効期限の短いアクセス トークンを受け取る場合...

まだ有効な有効期間の長い access_token を更新する場合は、最初に新しい有効期間の短いユーザー access_token を取得してから、以下の同じエンドポイントを呼び出す必要があります。返された access_token には新しい長寿命の有効期限がありますが、access_token 自体は、以前に許可された長寿命の access_token と同じである場合と同じでない場合があります。

ログアウトまでのセッションでのみ存続する種類の短命のアクセス トークンは、その記事に記載されているエンドポイントを使用して、60 日間の長期有効期限のアクセス トークンに変換する必要があります。新しい設定に構成されたデスクトップ アプリは、既定でこれらの種類を受け取りますが、これらは 60 日後に新しいログインで再生成する必要があります。

特にデスクトップアプリの場合、これを実装するのは非常に面倒ですが、Facebookの観点からは確かにはるかに安全です. アクセス トークンを永続的なアクセス資格情報ではなく一時的なものと考え始め、データベースを参照するのではなく、curl やその他の http ポスト メカニズムを介して有効性をチェックするようにロジックを変更し始めると、調整。保存されたアクセス トークンが存在することでアクセスが保証されるとアーキテクチャが想定することを許可しないでください。Facebook エンドポイントをクロス チェックして、必要に応じて再ログインを求めるようにしてください。

于 2012-04-30T19:29:06.387 に答える