这是我在我的网站上使用facebook登录时获取Facebook用户个人资料图片的php代码。但照片没有显示。我的图像坏了。
<?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)
{
}
?>
答案 0 :(得分:1)
只需通过GET请求使用以下图表路径:
/{user_id}?fields=picture.type(large),id,name
字段类型可以是以下值之一:
或者像这样使用宽度和/或高度值:
/{user_id}?fields=picture.width(200).height(200),id,name
您还可以添加 redirect = 0 参数。 默认情况下,图片边缘将返回图片而不是JSON响应。如果您希望图片边缘在您发出请求时返回描述图像集redirect = 0的JSON。
所以你将获得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",
}
答案 1 :(得分:-2)
如果您设置了Facebook应用,则会有“应用ID”和“App Secret”(您指定为“ID”和“代码”)。
您可以使用这两个变量来获取用户的图片,其中包含以下网址:
$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; ?>" />