带有电子邮件地址的 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 令牌