我正在整合FacebookSDK 4.x与自定义UI的集成,并使用以下方法登录并获得用户的电子邮件权限.
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error){
NSLog(@"%@",[error localizedDescription]);
}
else if (result.isCancelled){
NSLog(@"Cancled");
}
else
{
if ([result.grantedPermissions containsObject:@"email"])
{
NSLog(@"Granted all permission");
if ([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
if (!error)
{
NSLog(@"%@",result);
}
}];
}
}
else
{
NSLog(@"Not granted");
}
}
}];
Run Code Online (Sandbox Code Playgroud)
除非用户拒绝访问"电子邮件",否则这很有效.我在FacebookSDK文档中看到,我可以重新请求访问用户的电子邮件一次.根据FB文档:在此链接中给出
If someone has declined a permission for your app, the login dialog won't …Run Code Online (Sandbox Code Playgroud)