2

私は iOS SDK 3.1.1 を使用しており、一度に読み取りと公開の両方のアクセス許可を取得しようとしています。チュートリアルが言うように、私は FBSession openActiveSessionWithReadPermissions を呼び出しており、そのハンドラー - ハンドラー A - は、ハンドラー A が FBSessionStateOpen のセッション状態で呼び出された場合にのみ [[FBSession activeSession] reauthorizeWithPublishPermissions を呼び出します。

iOS 6 の設定で facebook アカウントを設定すると、reauthorizeWithPublishPermissions のハンドラー (ハンドラー B) が正常に呼び出され、エラー引数は nil になります。

ただし、iOS 6 の設定で facebook アカウントを設定していない場合、アプリを Safari に切り替えて公開許可を得ると、「ErrorReauthorizeFailedReasonUserCancelled」という名前の再認証エラーでハンドラー B が呼び出されます。

さらに奇妙なのはこれです。いずれの場合も、ハンドラー B が呼び出される前に、ハンドラー A が FBSessionStateOpenTokenExtended のセッション状態で呼び出されます。

これらは新しい SDK の通常の動作ですか、それとも予想される動作ですか? もしそうなら、ハンドラー B でエラーがゼロかどうかを確認する必要はありませんか?

4

1 に答える 1

0

私に起こり、しばらく検索した後、私はその解決策を見つけました。dispatch_asyncopenActiveSessionWithReadPermissionsのハンドラーAでreauthorizeWithPublishPermissionsを呼び出す必要があります。

dispatch_async(dispatch_get_current_queue(), ^{
    [[FBSession activeSession] reauthorizeWithPublishPermissions:permissions
                                                 defaultAudience:FBSessionDefaultAudienceEveryone
                                               completionHandler:^(FBSession *session, NSError *error) {
                                                   // handle the flow here
                                           }];
});
于 2012-12-30T11:56:03.163 に答える