Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
无法验证iOS Facebook SDK中PassportJS的访问令牌_Ios_Facebook_Node.js - Fatal编程技术网

无法验证iOS Facebook SDK中PassportJS的访问令牌

无法验证iOS Facebook SDK中PassportJS的访问令牌,ios,facebook,node.js,Ios,Facebook,Node.js,我正在尝试将Facebook iOS sdk与PassportJS一起使用(服务器是NodeJS) 我成功地用我的iOS应用程序登录了Facebook。接下来我要做的是将访问令牌移交给服务器,并从那里进行验证。不幸的是,它根本不起作用 奇怪的是,对于我的网站来说,它工作得很好。我只是使用回调url将令牌发布到服务器 那么在代码中,facebook登录后会发生什么(这是有效的) 然后,在登录控制器中收到通知: - (void) facebookLogin: (NSNotification*) no

我正在尝试将Facebook iOS sdk与PassportJS一起使用(服务器是NodeJS) 我成功地用我的iOS应用程序登录了Facebook。接下来我要做的是将访问令牌移交给服务器,并从那里进行验证。不幸的是,它根本不起作用

奇怪的是,对于我的网站来说,它工作得很好。我只是使用回调url将令牌发布到服务器

那么在代码中,facebook登录后会发生什么(这是有效的)

然后,在登录控制器中收到通知:

- (void) facebookLogin: (NSNotification*) notification
{
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    NSString *token = [notification.userInfo objectForKey:@"token"];
    [[CBApi sharedAPI] get:@"api/auth/facebook/callback" andParams:@{
        @"code": token
    } andCallback:^(NSDictionary *json) {
        [MBProgressHUD hideHUDForView:self.view animated:YES];
        if ([json objectForKey:kError]) {
            Alert(@"Error", @"Login details failed");
        } else {
            User *u = [User createEntity];
            u.email = self.emailField.text;
            [self dismissViewControllerAnimated:YES completion:nil];
        }
    }];
}
然后我从服务器返回此错误(从控制台复制粘贴):


正如我所说,当使用网站登录时,它完全可以工作,没有问题,只是它不接受iOS本机生成的访问令牌。我以前从来没有这样做过。如果你能帮我,那就太好了,谢谢你

我想出来了!对于任何有同样问题的人,这就是我所做的: 与其使用passportjs的常规Facebook策略,不如使用以下策略:

它允许您使用主动访问令牌,对我来说几乎是一个替代品。
该服务器在网站上使用了旧的facebook策略(passpostjs附带的策略)和用于iOS登录的facebookstrategy令牌。

我找到了答案!对于任何有同样问题的人,这就是我所做的: 与其使用passportjs的常规Facebook策略,不如使用以下策略:

它允许您使用主动访问令牌,对我来说几乎是一个替代品。 该服务器在网站上使用旧的facebook策略(passpostjs附带的策略)和用于iOS登录的facebookstrategy令牌

- (void) facebookLogin: (NSNotification*) notification
{
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    NSString *token = [notification.userInfo objectForKey:@"token"];
    [[CBApi sharedAPI] get:@"api/auth/facebook/callback" andParams:@{
        @"code": token
    } andCallback:^(NSDictionary *json) {
        [MBProgressHUD hideHUDForView:self.view animated:YES];
        if ([json objectForKey:kError]) {
            Alert(@"Error", @"Login details failed");
        } else {
            User *u = [User createEntity];
            u.email = self.emailField.text;
            [self dismissViewControllerAnimated:YES completion:nil];
        }
    }];
}
failed to obtain access token (status: 400 data: {
    "error": {
        "message": "Invalid verification code format.",
        "type": "OAuthException",
        "code": 100
    }
})