带有电子邮件地址的 FBSDKLoginManager 令牌

Posted

技术标签:

【中文标题】带有电子邮件地址的 FBSDKLoginManager 令牌【英文标题】:FBSDKLoginManager token with email address 【发布时间】:2015-12-18 18:12:03 【问题描述】:

我正在尝试通过 facebook SDK 在我的 ios 应用中进行注册

我正在使用 FBSDKLoginManager 登录到 facebook,我得到了我已验证的 AccessToken。

https://graph.facebook.com/me?access_token=tokenstring

我收到了姓名和 ID 作为回复,但我还需要收到电子邮件才能在 Qiuckblox 上注册。

我已经从 github 下载了 q-municate 应用程序(基于 quickblox.com)并检查了令牌。 我有相同的令牌,但结果不同。怎么会? 也许我应该在 facebook 中设置一些设置?

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];

[login logInWithReadPermissions:@[@"email", @"public_profile", @"user_friends"]
             fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 

    if (error) 
        // Process error
        NSLog(@"%@",error.localizedDescription);
    
    else if (result.isCancelled) 
        // Handle cancellations
    
    else 
        NSLog(@"%@",result.token.tokenString);

        if ([result.grantedPermissions containsObject:@"email"]) 
            NSLog(@"Granted all permission");
            if ([FBSDKAccessToken currentAccessToken]) 
                [[[FBSDKGraphRequest alloc] initWithGraphpath:@"me" parameters:@@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , friendlists"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
                    if (!error) 
                        NSLog(@"%@",result);
                    
                ];
            
         else 
            NSLog(@"Not granted");
        
    
];

这里是截图:

http://screencast.com/t/9KNK9HIb

http://screencast.com/t/BDsfYVZi

【问题讨论】:

【参考方案1】:
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@@"fields": @"id, name, first_name, last_name, picture.type(large), email"]

     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
         if (!error)
         
             NSLog(@"results:%@",result);

             NSString *email = [result objectForKey:@"email"];
          

这样改

【讨论】:

【参考方案2】:

你需要显式枚举所有你想要的字段:

https://graph.facebook.com/v2.5/me?fields=id,name,email,gender&access_token=<access_token>

【讨论】:

以上是关于带有电子邮件地址的 FBSDKLoginManager 令牌的主要内容,如果未能解决你的问题,请参考以下文章

带有电子邮件地址的 FBSDKLoginManager 令牌

带有信息的 Django HTML POST 删除按钮

在 paypal REST API 中发送带有付款人信息的用户电子邮件地址

仅在 android 中显示带有 EMAIL 地址的联系人

使用 Intent 发送带有设备信息的电子邮件

电子邮件地址中可以有撇号吗? [复制]