未通过 Graph API 接收 Facebook 图片

Posted

技术标签:

【中文标题】未通过 Graph API 接收 Facebook 图片【英文标题】:Not receiving Facebook picture via Graph API 【发布时间】:2012-05-02 08:22:53 【问题描述】:

我似乎无法使用当前 ios 图形方法正确检索用户的个人资料图片。

我的电话:self.pictureRequest = [facebook requestWithGraphpath:@"me/picture" andDelegate:self];

我如何处理结果:

-(void)request:(FBRequest *)request didLoad:(id)result
    if(request == self.pictureRequest)
        UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
        image.image = [UIImage imageWithData:result];
        [self.view addSubview:image];
        NSLog("result is %@", result);
    

所以我现在只是想获取个人资料图片。结果在控制台中显示为 null。我想这意味着我实际上没有得到结果? (我试过if(result) NSLog(@"got a result")但它没有返回,所以我猜结果不是fb发回的?)

有什么想法吗?我也在这里查找了一个类似的问题,但不确定他们有什么不同: Problem getting Facebook pictures via iOS

【问题讨论】:

【参考方案1】:

我可以像这样检索用户图片和其他信息..试试看

- (void)fetchUserDetails 
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"SELECT uid, name, pic, email FROM user WHERE uid=me()", @"query",nil];

    [fb requestWithMethodName:@"fql.query"
                                     andParams:params
                                 andHttpMethod:@"POST"
                                   andDelegate:self];


//Call this function after the facebook didlogin

请求didLoad中:

- (void)request:(FBRequest *)request didLoad:(id)result 


    if([request.url rangeOfString:@"fql.query"].location !=NSNotFound)
    
        if ([result isKindOfClass:[NSArray class]] && [result count]>0) 
            result = [result objectAtIndex:0];
        
        if ([result objectForKey:@"name"]) 

            self.fbUserName = [result objectForKey:@"name"];

           // Get the profile image
            UIImage *fbimage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[result objectForKey:@"pic"]]]];

【讨论】:

【参考方案2】:

如果您想使用 requestWithGraph 路径获取图片 URL(而不是像 @Malek_Jundi 提供的 requestWithMethodName),请在此处查看我的答案:

iOS Facebook Graph API Profile picture link

【讨论】:

【参考方案3】:

您还可以通过以下方式获取fb头像网址,

NSString *userFbId;
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture", userFbId]];

NSData *imageData = [[NSData alloc] initWithContentsOfURL:url];
self.userProfileImage.image = [UIImage imageWithData:imageData];

【讨论】:

以上是关于未通过 Graph API 接收 Facebook 图片的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 的 Sharekit(Graph API 版本)注销方法未完全注销或取消授权用户

如何使用 Graph API 获取未读消息?

Facebook Graph API 调用未检索所有字段

Facebook 请求配置文件 Graph API 无法在 iOS 7 本机 facebook 上未登录

Facebook Graph API Explorer 未列出其他人上传的已标记照片

Instagram 的帖子未显示在 Facebook Open Graph API 上