有没有办法使用图形api更改用户的个人资料图片?
我知道你不能使用其余的api(reference),但我在新图api中找不到任何内容。
答案 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`;