Iphone Facebook 3.x SDK通知未触发?

Iphone Facebook 3.x SDK通知未触发?,iphone,ios,facebook,Iphone,Ios,Facebook,我想知道是否有人知道为什么在我打开新的FBSession会话时,FBSessionDidSetActiveSessionNotification、FBSessionDidUnsetActiveSessionNotification、FBSessiondDBecomeOpenActiveSessionNotification或FBSessiondDBecomeClosedActiveSessionNotification从未被触发 我检测fbsessionIDBecomeOpenActiveSes

我想知道是否有人知道为什么在我打开新的FBSession会话时,FBSessionDidSetActiveSessionNotification、FBSessionDidUnsetActiveSessionNotification、FBSessiondDBecomeOpenActiveSessionNotification或FBSessiondDBecomeClosedActiveSessionNotification从未被触发

我检测fbsessionIDBecomeOpenActiveSessionNotification&fbsessionIDSetActiveSessionNotification的唯一方法是调用[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:];,这正常吗

试试这个:

+ (BOOL)openActiveSessionWithPermissions:(NSArray*)permissions
                        allowLoginUI:(BOOL)allowLoginUI
                   completionHandler:(FBSessionStateHandler)handler;
使用


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

是的,这也行。。。但它已经被弃用了。所以我现在可能不应该用它。我不认为是。。请参见此处,查看Facebook SDK 3.1的FBSession.h。这是该方法的声明;它被Facebook弃用(参见_属性_((弃用)));在3.1中,您必须分别请求读取权限和写入权限。使用openActiveSessionWithReadPermissions进行登录。稍后当您需要发布/写入时,请使用reauthorizeWithPublishPermissions:defaultAudience:completionHandler。查看:Facebook建议使用openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:或openActiveSessionWithAllowLoginUI查看文档
+ (BOOL)openActiveSessionWithReadPermissions:(NSArray*)readPermissions
                            allowLoginUI:(BOOL)allowLoginUI
                       completionHandler:(FBSessionStateHandler)handler;