Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios6 iOS SDK似乎无法处理iOS 6中吊销的访问令牌_Ios6_Single Sign On_Facebook Ios Sdk - Fatal编程技术网

Ios6 iOS SDK似乎无法处理iOS 6中吊销的访问令牌

Ios6 iOS SDK似乎无法处理iOS 6中吊销的访问令牌,ios6,single-sign-on,facebook-ios-sdk,Ios6,Single Sign On,Facebook Ios Sdk,在我的应用程序访问在iOS 6设置中注册的facebook帐户后,我从facebook的隐私设置中撤销了该应用程序。然后我尝试通过调用[FBSession openActiveSessionWithReadPermissions…]将我的应用程序与facebook重新连接,该方法使用旧的访问令牌创建facebook会话,该令牌已无效,无需再次请求权限授予 我认为这个问题与这个问题()有关,据说在SDK 3.1.1中已经解决了这个问题 但是,我正在使用SDK 3.1.1,并通过在出现无效访问令牌错

在我的应用程序访问在iOS 6设置中注册的facebook帐户后,我从facebook的隐私设置中撤销了该应用程序。然后我尝试通过调用[FBSession openActiveSessionWithReadPermissions…]将我的应用程序与facebook重新连接,该方法使用旧的访问令牌创建facebook会话,该令牌已无效,无需再次请求权限授予

我认为这个问题与这个问题()有关,据说在SDK 3.1.1中已经解决了这个问题

但是,我正在使用SDK 3.1.1,并通过在出现无效访问令牌错误时手动调用accountStore RenewCredentials for Account thing来解决此问题。

基于,我发现验证有效会话的唯一方法是执行简单的graph API调用。如果出现错误,
FBSession.activeSession.isOpen
将返回
NO
,这很好地表明令牌已过期

+ (void) ValidateSession
{    
    FBRequest *userDetails = [[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:@"/me"];
    [userDetails startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *result, NSError *error) {

        if (error) {
            if (FBSession.activeSession.isOpen) {
                // Less probable, so check error code.
            } else {
                // Bingo: here we know for sure that the token was useless.
                // Expected behavior: reauthorize.
            }
        } else if (result) {
            NSLog(@"%@", result);
            // token is valid, continue
        }

    }];
}

iOS似乎在应用程序被删除后仍保留Facebook代币,因此,在需要时重新确认代币有效是一个很好的做法。

我遇到了与您在这里描述的相同的问题,我已经能够使用您指出的公认答案解决它(最好说绕过它)。谢谢