如何使用图形api设置Facebook个人资料图片

时间:2010-11-29 18:26:49

标签: facebook facebook-graph-api

有没有办法使用图形api更改用户的个人资料图片?

我知道你不能使用其余的api(reference),但我在新图api中找不到任何内容。

5 个答案:

答案 0 :(得分:42)

使用Graph API将图片上传到现有相册(或创建新相册)。 会看起来像这样:

  $args = array('message' => 'Caption');
  $args['image'] = '@' . realpath("the_image.png");

  try {
    $data = $facebook->api('/'.$album_uid.'/photos', 'post', $args);
  }
  catch(Exception $e) {
    print "<pre>";
    print_r($e);
    print "</pre>";
  }

然后通过Graph API获取上传的图像并重定向到图像的链接,将&makeprofile=1添加到查询字符串。现在,用户将被重定向到配置文件图像裁剪页面:

try {
  $pictue = $facebook->api('/'.$data['id']);
  header("Location: ".$pictue['link']."&makeprofile=1");
}
catch(Exception $e) {
  print "<pre>";
  print_r($e);
  print "</pre>";
}

答案 1 :(得分:7)

PicBadges申请正在清楚地完成这项工作。只需看看他们的应用程序。它非常清楚它们是如何实现的。

他们没有直接将图片上传到“个人资料图片”相册。相反,他们像往常一样上传到他们自动生成的专辑(在他们的应用名称上),然后选择pic作为“个人资料照片”。但是,此方法涉及将用户重定向到他们需要裁剪之前的页面。

有趣的实施要注意!

答案 2 :(得分:5)

您可以使用图谱API上传到用户的个人资料相册,但似乎无法更新/ me /图片值以将用户当前个人资料图片设置为您上传的图片。

答案 3 :(得分:0)

用户图片图形API版本v6.0

阅读

您可以获得带有端点/{user-id}/picture的图片

创建

您无法在此端点上执行此操作。

更新

您无法在此端点上执行此操作。

删除

您无法在此端点上执行此操作。

答案 4 :(得分:0)

我也有这个问题。我设法使用此端点上传个人资料图片。

link提供有关如何上传个人资料图片的信息

        private async uploadProfilePhoto(pageId:string, accessToken: string, photoUrl: string){
            let url = FACEBOOK_API_URL + `${pageId}/picture`+ 
                `?access_token=${accessToken}`+
                `&picture=${photoUrl}`;
            let response = null;

            try {
             response = await axios({
                method: 'post',
                url:  url,
            }); 
            } catch (err) {
                /**  Here this error occures but the profile image is still uploaded. 
                 * {message: 'Unsupported post request.', type: 'GraphMethodException', code: 100, fbtrace_id: 'AGhsadasdaiqyf_YHJaztdasdadG7'
                 */           
            }

            return response;
        }

然后获取个人资料图片的ID(如果需要),您可以在此端点上执行获取请求。

const FACEBOOK_API_URL ='https://graph.facebook.com/v7.0/'
let url = FACEBOOK_API_URL + `${pageId}/photos`+
            `?access_token=${accessToken}` +
            `&fields=picture`;