0

アプリケーションで Facebook セッションのステータスを確認するために、次のコードを実装しています。

    - (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
    switch (state) {
        case FBSessionStateOpen:
                    if (!error) {
                        // We have a valid session
                        NSLog(@"User session found");

                        [self reautorizarPermisos:self ];
                    }

        break;
        case FBSessionStateClosed:
                    NSLog(@"sesion close");
                    [self    loginFB:self  ];

        break;
        case FBSessionStateClosedLoginFailed:

                    NSLog(@"sesssion failed");

                    [FBSession.activeSession closeAndClearTokenInformation];
            break;
        default:
            break;
    }

    [[NSNotificationCenter defaultCenter]
     postNotificationName:UIDocumentStateChangedNotification
     object:session];

    if (error) {
        UIAlertView *alertView = [[UIAlertView alloc]
                                  initWithTitle:@"Error"
                                  message:error.localizedDescription
                                  delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];
        [alertView show];
    }
}

このコードは、こちらの facebook ドキュメントからアクセスされました

そして、私は次のようにメソッドを呼び出しています

- (IBAction)login:(id)sender {

        FBSession *sesion;
        FBSessionState state;
        NSError *error;

        [self sessionStateChanged:sesion state:state error:error];
        NSLog(@"loginnnnnnn");
    }

問題は、状態がどのケースにも入らなかったことです。明らかに、セッションは開いていないか、閉じられているか、失敗していません。

4

2 に答える 2

0

ドキュメントによると、可能な値は次のFBSessionStateとおりです。

typedef enum {
    FBSessionStateCreated = 0,
    FBSessionStateCreatedTokenLoaded = 1,
    FBSessionStateCreatedOpening = 2,
    FBSessionStateOpen = 1 | FB_SESSIONSTATEOPENBIT,
    FBSessionStateOpenTokenExtended = 2 | FB_SESSIONSTATEOPENBIT,
    FBSessionStateClosedLoginFailed = 1 | FB_SESSIONSTATETERMINALBIT,
    FBSessionStateClosed = 2 | FB_SESSIONSTATETERMINALBIT,
} FBSessionState; 

あなたの中にswitchあなたは行方不明です

FBSessionStateCreated
FBSessionStateCreatedTokenLoaded
FBSessionStateCreatedOpening
FBSessionStateOpenTokenExtended

したがって、あなたのstate価値はそれらの1つである可能性があります。

于 2013-01-03T21:30:34.527 に答える