我已经阅读了很多关于从Facebook获取信息的教程,但到目前为止我都失败了.我只是想从Facebook获取用户名和个人资料图片.
- (IBAction)login:(id)sender { [FBSession openActiveSessionWithReadPermissions:@[@"email",@"user_location",@"user_birthday",@"user_hometown"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { switch (state) { case FBSessionStateOpen: [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary*user, NSError *error) { if (error) { NSLog(@"error:%@",error); } else { // retrive user's details at here as shown below NSLog(@"FB user first name:%@",user.first_name); NSLog(@"FB user last name:%@",user.last_name); NSLog(@"FB user birthday:%@",user.birthday); NSLog(@"FB user location:%@",user.location); NSLog(@"FB user username:%@",user.username); NSLog(@"FB user gender:%@",[user objectForKey:@"gender"]); NSLog(@"email id:%@",[user objectForKey:@"email"]); NSLog(@"location:%@", [NSString stringWithFormat:@"Location: %@\n\n", user.location[@"name"]]); } }]; break; case FBSessionStateClosed: case FBSessionStateClosedLoginFailed: [FBSession.activeSession closeAndClearTokenInformation]; break; default: break; } } ]; }
我使用此代码获取信息,但我无法获取任何信息.你能帮我解决一下吗?或者你更喜欢阅读教程吗?我已经阅读了developer.facebook.com上的教程.
感谢您的关注.
这是我发现获取用户个人资料图片的最简单方法.
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *FBuser, NSError *error) { if (error) { // Handle error } else { NSString *userName = [FBuser name]; NSString *userImageURL = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large", [FBuser objectID]]; } }];
可以使用的其他查询参数是:
类型:小,普通,大,方形
width:<value>
height:<value>
使用宽度和高度来获取裁剪的宽高比填充图像
进行以下Graph请求:
/me?fields=name,picture.width(720).height(720){url}
你会得到非常大而酷的个人资料图片:
{ "id": "459237440909381", "name": "Victor Mishin", "picture": { "data": { "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xpf1/t31.0-1/c628.148.1164.1164/s720x720/882111_142093815957080_669659725_o.jpg" } } }
PS /me?fields=picture.type(large)
不适合我.
if ([FBSDKAccessToken currentAccessToken]) { [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{ @"fields" : @"id,name,picture.width(100).height(100)"}]startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSString *nameOfLoginUser = [result valueForKey:@"name"]; NSString *imageStringOfLoginUser = [[[result valueForKey:@"picture"] valueForKey:@"data"] valueForKey:@"url"]; NSURL *url = [[NSURL alloc] initWithURL: imageStringOfLoginUser]; [self.imageView setImageWithURL:url placeholderImage: nil]; } }]; }
您还可以获得如下的用户名和图片:
[FBSession openActiveSessionWithReadPermissions:@[@"basic_info"] allowLoginUI:YES completionHandler: ^(FBSession *session, FBSessionState state, NSError *error) { if(!error && state == FBSessionStateOpen) { { [FBRequestConnection startWithGraphPath:@"me" parameters:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"id,name,first_name,last_name,username,email,picture",@"fields",nil] HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSDictionary *userData = (NSDictionary *)result; NSLog(@"%@",[userData description]); }]; } } }]; Output: picture = { data = { "is_silhouette" = 0; url = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-frc1/t5.0-1/xxxxxxxxx.jpg"; }; }; username = xxxxxxxxx;
您可以将参数保留为图片和用户名,并根据您的要求排除其他参数.HTH.