首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >脸书iOS软件开发工具包和swift:如何获取用户头像

脸书iOS软件开发工具包和swift:如何获取用户头像
EN

Stack Overflow用户
提问于 2015-01-25 08:41:59
回答 5查看 49.2K关注 0票数 28

我已经在Xcode6中集成了Facebook sdk (与swift)。在登录期间,我请求public_profile权限:

FBSession.openActiveSessionWithReadPermissions(["public_profile"], allowLoginUI: true, completionHandler: {
...
...

所以我请求用户的信息:

FBRequestConnection.startForMeWithCompletionHandler { (connection, user, error) -> Void in
...
...

为什么用户对象不包含个人资料图片?如何获取用户资料图片?这不是public_profile的一部分?

我得到了以下信息:

2015-01-25 01:25:18.858 Test[767:23804] {
"first_name" = xxx;
gender = xxx;
id = xxxxxxxxx;
"last_name" = xxxxxx;
link = "https://www.facebook.com/app_scoped_user_id/xxxxxxxxx/";
locale = "xxxxx";
name = "xxxxxxx xxxxxxx";
timezone = 1;
"updated_time" = "2013-12-21T18:45:29+0000";
verified = 1;
}

附言: xxx用于隐私

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-01-25 08:58:32

个人资料图片实际上是公开的,您只需将用户id添加到Facebook指定的个人资料图片url地址即可,例如:

var userID = user["id"] as NSString     
var facebookProfileUrl = "http://graph.facebook.com/\(userID)/picture?type=large"

这个特定的url地址应该返回用户个人资料图片的“大”版本,但in the docs还提供了更多的照片选项。

票数 64
EN

Stack Overflow用户

发布于 2015-07-09 14:28:45

如果你想得到更大的图片,只需将"type = large“替换为width=XX&height=XX即可

但是你能得到的最大的图片是原始图片

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
                              initWithGraphPath:@"me/picture?width=1080&height=1080&redirect=false" 
                              parameters:nil 
                              HTTPMethod:@"GET"]; 

[request startWithCompletionHandler:^(
                            FBSDKGraphRequestConnection *connection,
                            id result, 
                            NSError *error) { 
if (!error) 
{ 
   NSLog(@"result = %@",result);
   NSDictionary *dictionary = (NSDictionary *)result; 
   NSDictionary *data = [dictionary objectForKey:@"data"]; 
   NSString *photoUrl = (NSString *)[data objectForKey:@"url"]; 
} 
else 
{ 
   NSLog(@"result = %@",[error description]); } 
}];
票数 7
EN

Stack Overflow用户

发布于 2016-05-22 01:09:40

对于swift来说,这是获取带有特定大小的照片的url的简单方法:

    let params: [NSObject : AnyObject] = ["redirect": false, "height": 800, "width": 800, "type": "large"]
    let pictureRequest = FBSDKGraphRequest(graphPath: "me/picture", parameters: params, HTTPMethod: "GET")
    pictureRequest.startWithCompletionHandler({
        (connection, result, error: NSError!) -> Void in
        if error == nil {
            print("\(result)")


           let dictionary = result as? NSDictionary
           let data = dictionary?.objectForKey("data")
           let urlPic = (data?.objectForKey("url"))! as! String
           print(urlPic)



        } else {
            print("\(error)")
        }
    })

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28131970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档