Objective c Facebook会话状态始终不是FBSessionStateCreatedTokenLoaded

Objective c Facebook会话状态始终不是FBSessionStateCreatedTokenLoaded,objective-c,facebook,Objective C,Facebook,我使用最新的Facebook SDK(3.1.1) 我在我的AppDelegate中编写了一个函数,用于检查当前会话并根据状态创建或打开会话 第二个条件总是返回NO,然后转到显示登录屏幕 我不明白怎么回事 AppDelegate方法: if (facebook.isOpen == NO) { facebook = [[FBSession alloc] initWithPermissions:permission]; if (facebook.state == FBSessionS

我使用最新的Facebook SDK(3.1.1)

我在我的
AppDelegate
中编写了一个函数,用于检查当前会话并根据状态创建或打开会话

第二个条件总是返回
NO
,然后转到显示登录屏幕

我不明白怎么回事

AppDelegate方法:

if (facebook.isOpen == NO)
{
   facebook = [[FBSession alloc] initWithPermissions:permission];

    if (facebook.state == FBSessionStateCreatedTokenLoaded)
    {
        [facebook openWithCompletionHandler:^(FBSession *session,FBSessionState status,NSError *error)
        {
            // load user details
        }];
    }
    else
    {
        // show login screen
    }
}

FbSession类中存在属性访问令牌

使用该字符串检查登录状态

如果该字符串中的值为null,则表示会话已过期,但如果该字符串中的值为null,则表示您仍在登录应用程序,并且可以执行任何您想要的操作

问候


Abhishek Goyal

如果会话状态等于FBSessionStateCreatedTokenLoaded,则表示存在缓存的accessToken,则调用open*将导致打开会话,而无需UX或应用程序切换

-(BOOL)validFBSessionExists{
        if (FBSession.activeSession.isOpen){
            NSLog(@"Facebook accessToken:%@",FBSession.activeSession.accessTokenData.accessToken);
            return YES;
        }
        else if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded)
        {
            // Cached token exist, Session needs to be re-opened
            [FBSession.activeSession openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:nil];
            return YES;
        }
        return NO;
}

facebook.accessToken也总是为零。你能分享你如何获得facebook访问令牌的代码吗?我发现了问题-我尝试使用不同的权限初始化会话两次。谢谢