获取facebook用户';的个人资料图片


Get facebook user's profile picture

这是我的php代码,当我在我的网站上使用Facebook登录时,可以获得Facebook用户配置文件图像。但照片没有显示。我得到了一个破碎的形象。

<?php
session_start();
require_once 'vendor/autoload.php';
Facebook'FacebookSession::setDefaultApplication('appid', 'appcode');
$facebook = new Facebook'FacebookRedirectLoginHelper('http://example.com/index.php/');

try 
{
    if($session = $facebook->getSessionFromRedirect()) 
    {
        $_SESSION['facebook'] = $session->getToken();
        header('Location: ../index.php');
    }
    if(isset($_SESSION['facebook'])) 
   {
        $session = new Facebook'FacebookSession($_SESSION['facebook']);
        $request = new Facebook'FacebookRequest($session, 'GET', '/me');
        $request = $request->execute();
        $user = $request->getGraphObject(Facebook'GraphUser::className());
        echo "Name: " . $user->getName();
        echo "<br/>";
        echo '<img src='"https://graph.facebook.com/". $user. /picture?type=large'">';
    }
}
    catch(Facebook'FacebookRequestException $e) 
    {
      echo " Error: " . $e->getMessage();
    }  
    catch('Exception $e) 
      {
      }
?>

只需通过GET请求使用以下Graph路径:

/{user_id}?fields=picture.type(large),id,name

字段类型可以是以下值之一:

  • 小型
  • 正常
  • 大型
  • 正方形

或者使用这样的宽度和/或高度值:

/{user_id}?fields=picture.width(200).height(200),id,name

您还可以添加redirect=0参数。默认情况下,图片边缘将返回图片,而不是JSON响应。如果您希望图片边缘在发出请求时返回描述图像的JSON,请设置redirect=0。

因此,您将得到JSON响应:

{
  "picture": {
    "data": {
      "height": 120,
      "is_silhouette": false,
      "url": "https://scontent.xx.fbcdn.net/hprofile-xaf1/v/t1.0-1/c53.10.120.120/165675_138088076251005_752993_n.jpg?oh=a9450bf53f2d2294531e11ae28be99c1&oe=56C740A5",
      "width": 120
    }
  },
  "id": "138087416251071",
  "name": "Zenonis",
}

如果你设置了一个Facebook应用程序,你会有一个"应用程序ID"和一个"app Secret"(你指定为"ID"answers"Code")。

您可以使用这两个变量来获得具有以下url的用户图片:

$url = 'https://graph.facebook.com/v2.0/' . $user_id . '/picture?redirect=0&type=large&access_token=' . $app_id . '|' . $app_secret;

然后,您可以在src属性中打印出这个url:

<img src="<?php print $url; ?>" />