有没有办法使用Graph API更改用户的个人资料图片?
我知道你不能使用REST API进行更改 (参考文献),但我在新的Graph API中找不到任何相关信息。
有没有办法使用Graph API更改用户的个人资料图片?
我知道你不能使用REST API进行更改 (参考文献),但我在新的Graph API中找不到任何相关信息。
使用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>";
}
PicBadges应用(不再可用)清楚地完成了这项工作。只需查看他们的应用程序,就可以很清楚地了解他们如何实现。
他们不是直接将图片上传到“个人资料图片”相册中。相反,他们像往常一样上传到他们的自动生成的相册(使用应用程序名称),然后选择照片作为“个人资料图片”。但是,这种方法涉及将用户重定向到页面,在那里他们需要裁剪它才能完成。
值得注意的有趣实现!
用户头像:Graph API 版本 v6.0
读取
您可以使用端点/{user-id}/picture
获取图片。
创建
您无法在此端点上执行此操作。
更新
您无法在此端点上执行此操作。
删除
您无法在此端点上执行此操作。
我也遇到了这个问题。我已经使用此端点成功上传了个人资料图片。
此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`;