Spe*_*ftw 3 php facebook facebook-graph-api facebook-php-sdk
直到几个月前我才使用这种方法来获取用户的Facebook个人资料图片并且工作正常.
public function getUserProfilePic(){
$access_token = $this->facebook_obj->getAccessToken();
$user_id = $this->facebook_obj->getUser();
$response = $this->facebook_obj->api(
"/me/picture",
"GET",
array (
'redirect' => false,
'type' => 'large'
)
);
return (!empty($response['data']['url'])) ? $response['data']['url'] : 'images/default_profile.jpg';
}
Run Code Online (Sandbox Code Playgroud)
但是由于新的PHP SDK我对这个方法有一些问题.如果我在我的应用程序的主菜单上找了5分钟而不是点击进入它调用此方法的页面我得到
"OAuthException:必须使用活动访问令牌来查询有关当前用户的信息"错误.
有什么想法吗?
Sah*_*tal 10
我想,与新/旧SDK没什么关系.用户已注销,或者访问令牌已过期,或者您在会话中对用户的处理存在缺陷.
每当您尝试拨打电话/me但没有用户登录到应用程序时,就会发生此错误.
因此,在进行调用之前,您应始终验证当前用户,然后继续进行,例如:
$user_id = $this->facebook_obj->getUser();
if ($user_id) {
try {
$response = $this->facebook_obj->api(
"/me/picture",
"GET",
array (
'redirect' => false,
'type' => 'large'
)
);
} catch (FacebookApiException $e) {
error_log($e);
}
}else {
// redirect to Facebook login to get a fresh user access_token
$loginUrl = $this->facebook_obj->getLoginUrl();
header('Location: ' . $loginUrl);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
你不需要做redirect: false和url从json中取出.您可以直接使用url作为图像源:
https://graph.facebook.com/{user-id}/picture?type=large
Run Code Online (Sandbox Code Playgroud)
而已!
| 归档时间: |
|
| 查看次数: |
9212 次 |
| 最近记录: |