iOS で Facebook SDK を使用して、ユーザーから投稿権限を取得しようとしています。
ユーザーの Facebook ウォールに投稿するために必要な公開権限がアプリにない場合に呼び出されるメソッドで、以下のコードを呼び出しています。
// No permissions found in session, ask for it
[FBSession.activeSession requestNewPublishPermissions: [NSArray arrayWithObject:@"publish_actions"]
defaultAudience: FBSessionDefaultAudienceEveryone
completionHandler: ^(FBSession *session, NSError *error)
{
if( !error )
{
// Do something
}
}];
このコードを初めて呼び出すと、ユーザーはアクセス許可ページに移動し、デバイスでサファリに切り替わる前にブロックが呼び出され、このエラー メッセージが返されます。
Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0xc426410 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorReauthorizeFailedReasonUserCancelled,
その後、アプリは、ユーザーが [ok] を選択する safari のアクセス許可ページを表示し続けます。その後、アプリに戻ります。ユーザーにアクセス許可ページが表示されて受け入れられたとしても、この時点ではアクセス許可は設定されていません。
2 回目に投稿しようとすると、ユーザーは safari のアクセス許可ページに移動し、requestNewPublishPermissions メソッドはすぐには失敗しません。ユーザーが [ok] を選択すると、すべてが期待どおりに機能します。
そのため、requestNewPublishPermissions を初めて呼び出したときにのみ、すぐにエラー ErrorReauthorizeFailedReasonUserCancelled が返されて失敗します。
これは、シミュレーターとデバイスで発生します。
何がこれを引き起こしているのでしょうか?