1

我想知道是否有人知道为什么当我打开一个新的 FBSession 会话时 FBSessionDidSetActiveSessionNotification、FBSessionDidUnsetActiveSessionNotification、FBSessionDidBecomeOpenActiveSessionNotification 或 FBSessionDidBecomeClosedActiveSessionNotification 永远不会被触发?

我检测到 FBSessionDidBecomeOpenActiveSessionNotification 和 FBSessionDidSetActiveSessionNotification 的唯一方法是当我调用 [FBSession setActiveSession:]; 明确地。

基本上,我得到了类似的东西:

_session = [[FBSession alloc] initWithAppID: FACEBOOK_AppId
                                permissions: _facebookPermissions
                            defaultAudience: FBSessionDefaultAudienceOnlyMe
                            urlSchemeSuffix: nil
                         tokenCacheStrategy: nil];

    [_session openWithCompletionHandler:^(FBSession *session,
                                          FBSessionState status,
                                          NSError *error) {

        [FBSession setActiveSession: _session];
        // ...
    }];

我必须调用 [FBSession setActiveSession:]; 是否正常??

4

2 回答 2

1

利用

+ (BOOL)openActiveSessionWithReadPermissions:(NSArray*)readPermissions
                            allowLoginUI:(BOOL)allowLoginUI
                       completionHandler:(FBSessionStateHandler)handler;

不过,这实际上只是一个帮助函数,用于执行类似于您已经在做的事情。如果你从 git repo 中获取源代码,你可以看到 FBSession.m 中发生了什么。

于 2012-10-10T16:04:39.693 回答
1

尝试这个:

+ (BOOL)openActiveSessionWithPermissions:(NSArray*)permissions
                        allowLoginUI:(BOOL)allowLoginUI
                   completionHandler:(FBSessionStateHandler)handler;
于 2012-10-08T06:25:23.270 回答