Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook图形API+;PHP SDK:获取大用户图片的URL_Php_Facebook_Facebook Graph Api_Image_Avatar - Fatal编程技术网

Facebook图形API+;PHP SDK:获取大用户图片的URL

Facebook图形API+;PHP SDK:获取大用户图片的URL,php,facebook,facebook-graph-api,image,avatar,Php,Facebook,Facebook Graph Api,Image,Avatar,我正在尝试将一个Facebook应用程序(一个PHP脚本嵌入)从旧的FBML重写为新的iFrame类型,它可以正常工作: <?php require_once('facebook.php'); define('FB_API_ID', '182820975103876'); define('FB_AUTH_SECRET', 'XXX'); $facebook = new Facebook(array( 'appId' => FB_API_ID,

我正在尝试将一个Facebook应用程序(一个PHP脚本嵌入)从旧的FBML重写为新的iFrame类型,它可以正常工作:

<?php

require_once('facebook.php');

define('FB_API_ID', '182820975103876');
define('FB_AUTH_SECRET', 'XXX');

$facebook = new Facebook(array(
            'appId'  => FB_API_ID,
            'secret' => FB_AUTH_SECRET,
            'cookie' => true,
            ));

if (! $facebook->getSession()) {
    printf('<script type="text/javascript">top.location.href="%s";</script>',
        $facebook->getLoginUrl(
                array('canvas'    => 1,
                      'fbconnect' => 0,
                      #'req_perms' => 'user_location',
        )));

} else {
    try {
        $me = $facebook->api('/me');

        $first_name = $me['first_name'];
        $city       = $me['location']['name'];
        $female     = ($me['gender'] != 'male');
        $fields     = $facebook->api('/me', array(
                          'fields' => 'picture',
                          'type'   => 'large'
                      ));
        $avatar     = $fields['picture'];

        # then I print swf tag and pass first_name;city;avatar to it

    } catch (FacebookApiException $e) {
        print('Error: ' . $e);
    }
}

?>

如果您知道用户ID,只需使用:

<img src="http://graph.facebook.com/<UID>/picture?type=large" />
/picture?type=large”/>
还请注意,您可以使用该URL通过cURL检索内容

$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,
"http://graph.facebook.com//picture?type=large");
curl_setopt($ch,CURLOPT_头,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_NOBODY,true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_exec($ch);
$url=curl\u getinfo($ch,CURLINFO\u有效的\u url);
卷曲关闭($ch);
var_dump($url);

您可以使用FQL,而不是进行两次API调用,例如:

$result = $facebook->api(array(
    'method'=>'fql.query',
    'query'=>'SELECT uid,name,first_name,current_location,sex,pic_big FROM user WHERE uid=me()'
));

当然,
fql.query
不是一种图形方法,但它仍然是使用fql的方法。

谢谢,我想知道你的技巧是否适用于我的情况(我将first_name;city;female;avatar的URL编码字符串作为flashvars传递到Flash游戏的swf文件)…我不熟悉Flash,但只要您可以下载图像URL,就应该能够使用相同的URL。或者,您可以对其进行base64编码,并将原始数据传递到SWF(或其他)中不,对不起,事实上这对我不起作用,因为我将该头像URL传递给我的多人游戏的其他用户,他们没有访问该URL的权限…所以我正在寻找另一种方式来获取直接用户图片URL,比如-我更新了我的问题,很抱歉没有提及。我不明白他们怎么没有权限;如果你知道的话ID,你有权访问他们的照片,这是公开的。尽管如此,你仍然可以按照跳跃获取最终响应URL-看起来很有希望这样做。不,你不能发送profile.ak.fbcdn.net图片URL,这是一个CDN(内容交付网络)链接。这意味着它是在最近的服务器中获取的,因此这意味着facebook用户可能会为同一张图片获取不同的URL。某些链接在其他国家或地区不起作用。从flash加载时,您仍然可以使用“”作为直接URL。如mc.loadMovie(“);
$result = $facebook->api(array(
    'method'=>'fql.query',
    'query'=>'SELECT uid,name,first_name,current_location,sex,pic_big FROM user WHERE uid=me()'
));