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

标签 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';
}

但是自从使用新的 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/

相关文章:

php - Javascript 原型(prototype)是否类似于 PHP 静态方法?

php - 从 MySQL 数据库中解密数据

facebook - Graph Facebook 发生未知错误

ruby-on-rails - 删除 Rails 中 facebook graph api 发布的帖子上的 "via APP_NAME"

ios - 为什么在访问用户的 Facebook 信息时出现此错误?

facebook - 通过通知 API 从应用程序向用户发送通知

php - stackoverflow.com、airbnb.com、google+、facebook.com 等开发中使用的工具?

php - 存储和检索翻译文本的最快方法 - 数据库还是平面文件?

xcode - “SLComposeViewController” 是否已停止预填充 Facebook 共享的初始文本?

facebook - 在Facebook上分享视频