Facebook Graph API是Facebook提供的主要开发者接口,允许开发者读取和写入Facebook社交图谱中的数据。个人资料照片是用户数据的一部分,可以通过特定的API端点访问。
// 使用Facebook JavaScript SDK
FB.api(
'/me/picture',
{
redirect: false,
height: 200, // 可选参数,指定高度
width: 200 // 可选参数,指定宽度
},
function(response) {
if (response && !response.error) {
console.log(response.data.url);
}
}
);
// 需要user_photos权限
FB.api(
'/{user-id}/picture',
{
redirect: false,
type: 'large' // small, normal, album, large, square
},
function(response) {
// 处理响应
}
);
原因:Facebook的照片URL通常是短期有效的
解决方案:每次需要显示照片时重新获取URL,或使用redirect: false
参数获取长期有效的URL
原因:未申请正确的权限或用户未授权 解决方案:
// 登录时请求user_photos权限
FB.login(function(response) {
// 处理响应
}, {scope: 'user_photos'});
原因:直接从客户端JavaScript访问照片URL可能受限 解决方案:通过服务器端代理请求或使用Facebook SDK
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v12.0',
]);
try {
$response = $fb->get('/me/picture?redirect=0&height=200', '{access-token}');
$graphNode = $response->getGraphNode();
$photoUrl = $graphNode['url'];
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
没有搜到相关的沙龙