gpt4 book ai didi

php - Facebook - 获取个人资料图片php sdk

转载 作者:可可西里 更新时间:2023-11-01 00:05:29 28 4
gpt4 key购买 nike

直到几个月前,我一直在使用这种方法来获取用户的 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';
}

但是自从使用新的 PHP SDK 以来,我在使用这种方法时遇到了一些问题。如果我在我的应用程序的主菜单上 afk 5 分钟,然后继续单击以转到它调用此方法的页面,我得到

"OAuthException : An active access token must be used to query information about the current user" error.

有什么想法吗?

最佳答案

我猜与新/旧 SDK 无关。用户已注销,或者访问 token 已过期,或者您对 session 中用户的处理存在缺陷。

每当您尝试使用 /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);
}

编辑:

您不需要执行 redirect: false 并从 json 中获取 url。可以直接使用url作为图片来源:

https://graph.facebook.com/{user-id}/picture?type=large

就是这样!

关于php - Facebook - 获取个人资料图片php sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036412/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com