何よりも前に、質問する前に、以下の問題を解決するためにthisとthisの両方の質問を読みました。
私の問題は、accessToken の有効期限が切れたとき (有効期限が過ぎたか、Facebook の App Center からアプリを手動で削除したため)、次のコードです。
if ([[FBSession activeSession] isOpen]) {
//do something
}
else {
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if(FB_ISSESSIONOPENWITHSTATE(status)) {
//do something
}
}
}];
}
FBSession.activeSessionを開いた状態でelseブロックに入りますが、「何かをする」が実行されるとaccessTokenが無効になるため、リクエストはエラーを取得します:HTTPステータスコード:400.手順全体を2回実行しようとすると、すぐにFBSessionが許可を求めます(iOS6 統合 facebook、Facebook アプリ、または Safari の Facebook Web サイトの UIAlertView のいずれか) で、残りはスムーズに実行されます。
私の懸念は、うまく機能させるためにすべてを 2 回実行しなければならない理由と、なぜ Facebook SDK が最初に activeSession と accessToken が無効であることを検出できないのかということです。
よろしくお願いします!