10

Facebookのログイン時に使用する次のコードがあります。

- (BOOL)openFBSessionWithAllowLoginUI:(BOOL)allowLoginUI
            withCompletionHandler:(void (^)())completionHandler
{

    NSArray *permissions = [NSArray arrayWithObjects:
                        @"user_photos",
                        @"email",
                        nil];
    return [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:allowLoginUI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
       if (error != nil) {
        ...
       } else {
            switch (state) {
               case FBSessionStateOpen:
               {
                   ...
               }
               case FBSessionStateClosed:
               {
                   ...
               }
               case FBSessionStateClosedLoginFailed:
               {
                   ...
               }
               default:
                   break;
           }
       }
   }];
}

上記はログインに問題なく機能します。しかし、次のコードを使用してログアウトすると

[FBSession.activeSession closeAndClearTokenInformation];

これは再び openActiveSessionWithReadPermissions:permissions allowLoginUI: の completionHandler を呼び出します。それは私には意味がありません。私はそれが正しい行動だとは思いません。誰もこの問題を見たことがありますか?どのようにログアウトしますか? iOS6 で SDK 3.5 を使用しています。

4

2 に答える 2

0

これは非常に悪い行為だと思います。

FBSession には隠しプロパティがあります。

@property (readwrite, copy) FBSessionStateHandler loginHandler;

したがって、次のようにブロック内のこのコードで nil に設定できます。

[FBSession openActiveSessionWithReadPermissions:FACEBOOK_PERMISSIONS
                                           allowLoginUI:NO
                                      completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
                                          [[FBSession activeSession] performSelector:NSSelectorFromString(@"setLoginHandler:") withObject:nil];
#pragma clang diagnostic pop
                                          // Your stuff...
                                      }];
于 2014-03-27T15:41:03.773 に答える