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

28

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

我知道你不能使用REST API进行更改 (参考文献),但我在新的Graph API中找不到任何相关信息。


5个回答

43

使用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>";
}

6
@Mattias 我不认为这会违反政策,因为你并没有自己设置个人资料图片。它只是弹出一个对话框,让用户可以选择是否设置。 - aalaap
1
这不起作用。我正在尝试使用Graph API Explorer和URL https://graph.facebook.com/albumid/photos 字段:信息、网址、makeprofile我做错了什么? - Sanket
1
如何获取专辑 album_uid - salih kallai
1
@AlexisWilke 我已经很多年没有使用Facebook API了,但是在/me/albums上进行的get操作似乎可以获取相册的ID(https://developers.facebook.com/tools/explorer?method=GET&path=me%2Falbums&version=v2.7)。 - fredrik
3
可悲的是,“makeprofile=1”这个技巧似乎不再起作用了。它确实是 Facebook 使用的 URL,但只有在从剧院视图中点击它时才有效。 - David Ljung Madison Stellar
显示剩余10条评论

8

PicBadges应用(不再可用)清楚地完成了这项工作。只需查看他们的应用程序,就可以很清楚地了解他们如何实现。

他们不是直接将图片上传到“个人资料图片”相册中。相反,他们像往常一样上传到他们的自动生成的相册(使用应用程序名称),然后选择照片作为“个人资料图片”。但是,这种方法涉及将用户重定向到页面,在那里他们需要裁剪它才能完成。

值得注意的有趣实现!


我已经编辑了答案,删除了URL,现在它会跳转到广告页面。 - Per Enström

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

0

用户头像:Graph API 版本 v6.0

读取

您可以使用端点/{user-id}/picture获取图片。

创建

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

更新

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

删除

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


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,可以在此端点上执行GET请求。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接