1

Androidでベータ3.0SDKを使用して、session.openForRead()基本的なアクセス許可(電子メール)を使用した簡単な呼び出しでFacebookセッションを開きます。

ユーザーのウォールにメッセージを公開したいのですぐにsession.reauthorizeForPublish()、オブジェクトに新しい公開権限(publish_actions)を含めてセッションを再承認しReauthorizeRequestます。

最後の要求が成功するとすぐに、への呼び出しsession.getPermissions()は最後に要求されたアクセス許可(publish_actions)のみを返しますが、以前の読み取りアクセス許可(電子メール)はすべて失われます。

ReauthorizeRequestのパラメータ権限のドキュメントには、「リクエストに対する追加の権限」が明確に記載されているため、リクエスト後にセッションが他のすべての権限を失う理由がわかりません。

どうもありがとう、アレックス

4

1 に答える 1

3

アレックス、申し訳ありませんが、これに遭遇しました。これは SDK のバグであり、最終リリースの前に修正に取り組んでいます。それまでの間、いくつかの回避策を試すことができます。

  1. セッション オブジェクトのパーミッションの概念は Facebook サービスと同期していませんが、セッションに関連付けられたアクセス トークンにはまだそれらのパーミッションがあり、付与されたパーミッションのいずれかを必要とする Graph API 呼び出しを行うために引き続き使用できます (もちろん、ユーザーはその後それらのいずれかを取り消しました)。そのため、アプリケーション ロジックでSession.getPermissions()呼び出しの結果を無視できる場合 (たとえば、UI フローが、フローの特定のステップに到達する前にユーザーが特定のアクセス許可を既に付与している必要があることを意味する場合、そのアクセス許可が存在すると見なすことができます) 、何をgetPermissions言っても、これらのアクセス許可を必要とする Graph API 呼び出しを行うことができます。トークンに関連付けられているアクセス許可に関する真の真実は、Session オブジェクトではなくサービスにあります。

  2. アプリのロジックで、特定のパーミッションが付与されているかどうかを確認する必要がある場合、残念ながら現時点ではパーミッションを個別に追跡する必要があるかもArrayList<String>しれません。Session.StatusCallbackセッションが開かれ、セッションが閉じられるたびにクリアされます。(状態が遷移して結果を保存するたびに「me/permissions」を呼び出すこともできOPENED_TOKEN_UPDATEDます。) これは、実際の修正が利用可能になるまでの一時的な回避策にすぎないと考えてください。お役に立てれば。

于 2012-12-01T00:10:28.630 に答える