从Facebook iOS 7获取用户名和个人资料图片

 水果jia 发布于 2023-02-10 03:48

我已经阅读了很多关于从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上的教程.

感谢您的关注.

4 个回答
  • 这是我发现获取用户个人资料图片的最简单方法.

    [[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>

    使用宽度高度来获取裁剪的宽高比填充图像

    2023-02-10 04:07 回答
  • 进行以下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)不适合我.

    2023-02-10 04:10 回答
  • 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];
            }
        }];
    }
    

    2023-02-10 04:10 回答
  • 您还可以获得如下的用户名和图片:

    [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.

    2023-02-10 04:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有