0

新しい Facebook SDK を実装していますが、ログイン後以外はすべて順調に進んでいるようです。アプリが Safari に移動し、「OK」を選択すると、アプリに戻り、成功が報告されます。

- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
    switch (state) {
        case FBSessionStateOpen: {
            NSLog(@"success");
        }

.
.
.

}

しかし、直後にステータスを確認すると:

if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
    NSLog(@"Logged in");
} else {
    NSLog(@"Not logged in");
}

ログインしていません。エラー メッセージは表示されません。トークンは発行後すぐに期限切れになるようです。これに対処する方法についていくつかのガイダンスを希望します。このアプリは新しいプロジェクトとして作成されましたが、既存のアプリの更新です。ただし、新しいアプリを実行しているときに、古いアプリがデバイスにありません。それが重要な場合は、それについて言及したいと思いました。

4

1 に答える 1

1

その状態はこの条件に固有です。

 /*! One of two initial session states indicating that a cached token was loaded;
     when a session is in this state, a call to open* will result in an open session,
     without UX or app-switching*/
    FBSessionStateCreatedTokenLoaded        = 1,

「成功」NSLogは投稿したコードで実行されるため、実際の状態はFBSessionStateOpenです。これは、ログインしていて有効なアクセストークンを持っていることを意味します(検証するにはFBSession.activeSession.accessTokenからログアウトしてください)。とにかく、私はあなたが良いはずだと信じています-あなたのloggedIn/notLoggedIn条件はただ無効でした。

于 2012-11-17T21:11:21.480 に答える