接入篇
权限篇
比如说获取邮箱权限:
//方式一:
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.readPermissions = @[@"email"];
//方式二:
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithReadPermissions:@[@"email"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
//TODO: process error or result
//注意这里面通过result是拿不到邮箱的
}];

Snip20180418_82.png
具体拿邮箱,还需要使用以下的请求操作:
//获取用户信息 picture用户头像
- (void)getUserInfoWithResult:(FBSDKLoginManagerLoginResult *)result
{
NSDictionary*params= @{@"fields":@"id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified"};
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:result.token.userID
parameters:params
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSLog(@"%@",result);
/*
{
"age_range" = {
min = 21;
};
"first_name" = "\U6dd1\U5a1f";
gender = female;
id = 320561731689112;
"last_name" = "\U6f58";
link = "https://www.facebook.com/app_scoped_user_id/320561731689112/";
locale = "zh_CN";
name = "\U6f58\U6dd1\U5a1f";
picture = {
data = {
"is_silhouette" = 0;
url = "https://fb-s-c-a.akamaihd.net/h-ak-fbx/v/t1.0-1/p50x50/18157158_290358084709477_3057447496862917877_n.jpg?oh=01ba6b3a5190122f3959a3f4ed553ae8&oe=5A0ADBF5&__gda__=1509731522_7a226b0977470e13b2611f970b6e2719";
};
};
timezone = 8;
"updated_time" = "2017-04-29T07:54:31+0000";
verified = 1;
}
*/
}];
}
注意点:
①以上这个result就是第二种方式拿到的result
②以上获取的权限有两个,一个是public_profile和email两个权限,应该像如下这样写:
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithReadPermissions:@[@"email",@"public_profile"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
}];
③以上这个打印result发现可能没有email这个内容,为什么呢?我明明加了这个项对吧。原因可能是因为你没有添加邮箱作为Facebook的登录方式,所以你应该绑定个邮箱,这样才能获取到你的邮箱了,添加邮箱位置:

Snip20180418_81.png
当然还可以获取用户的好友关系等等~~~
当然服务端也是可以通过UID和TOKEN去获取的...
推荐阅读: