2011-09-29 138 views
5

我已经阅读了很多关于此的教程/文章/问题,以及试图在fb文档中找到有用的东西。用图api获取照片

到目前为止,我还没有取得任何进展,所以任何输入都将不胜感激,我只是试图访问我的照片列表,但我得到的只是一个空数组。

我知道我已经添加了比我需要的更多的req_perms,我只是从一个“工作教程”中复制了那些不适合我的工作,并且在阅读了一个线程之后,我还添加了user_photo_video_tags,因为这对于线程海报(再次,不是我)。

我已经得到的对话框,让照片与我的应用程序分享我的照片,登录工作没有任何问题,访问令牌我得到的似乎是正确的,在登录我参观后:

https://graph.facebook.com/me/photos?access_token=和令牌,并得到一个空数组,如果我没有登录或access_token没有链接到我的应用程序会有一些错误,但我得到的是一个空数组。

在此先感谢您的任何意见。

感谢钱尼蓝光我能验证我的权限:

{ 
    "data": [ 
     { 
     "installed": 1, 
     "status_update": 1, 
     "photo_upload": 1, 
     "video_upload": 1, 
     "create_note": 1, 
     "share_item": 1, 
     "publish_stream": 1 
     } 
    ] 
} 

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 
require_once 'library/facebook.php'; 

$app_id = "xxxxxxxxxxxxxxxx"; 
$app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 

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

$loginLink = $facebook->getLoginUrl(array(
    'scope' => 'user_status,publish_stream,user_photos,user_photo_video_tags' 
)); 
$logOutLink = $facebook->getLogoutUrl(); 

$user = $facebook->getUser(); 

if ($user) { 
    try { 
     // User logged in, get token 
     $token = $facebook->getAccessToken(); 
     //var_dump($token); dumped successfully 
     // Get public profile info 
     $user_profile = $facebook->api('/me'); 
     //var_dump($user_profile); dumped successfully 
     $photos = $facebook->api('/me/photos?access_token=' . $token); 
     var_dump($photos); // Empty array, BAH! 
    } catch (FacebookApiException $e) { 
     $user = null; 
    } 
} 

?> 
<a href="<?php echo $loginLink; ?>">Click here to login if you aren't autoredirected</a><br /><br /><br /> 
<a href="<?php echo $loginLink; ?>">Click here to logout</a> 

回答

3

不知道这是否是问题,但尝试。看起来你正在使用最新的PHP SDK。在你的getLoginUrl();请尝试将“req_perms”更改为“范围”。

像这样:

$loginLink = $facebook->getLoginUrl(array(
    'scope' => 'user_status,publish_stream,user_photos,user_photo_video_tags' 
)); 

您可以验证你已经访问https://graph.facebook.com/me/permissions/?access_token=XXXX

+0

谢谢,我还得到一个空数组,但至少我可以验证我的权限{ “数据”:[ { “安装”:1, “status_update”:1, “photo_upload”:1, “video_upload”:1, “create_note”:1, “share_item”:1, “publish_stream”:1 } ] } –

+0

你好像缺少user_photos许可。这可能是你得到一个空数组的原因。尝试删除应用程序并重新授权。 –

2

测试一些其他权限,我发现Facebook是不是更新的权限了USB Key后授权正确的权限,即使在注销应用程序时,当我查看Chaney Blu获得的图形权限链接时,再次登录并接受新权限也没有任何变化。

我使用该链接验证来自Facebook的图表api页面http://developers.facebook.com/docs/reference/api/的令牌,并注意到该令牌有权访问user_photos,但不能访问我的令牌。

进入我的Facebook设置并删除应用程序让facebook在我下次登录应用程序时更新我的​​权限。

感谢Chaney Blu让我走上正轨。如果我有名誉,会投你一票。

+1

这是一些代表的投票:) – CuddleBunny

+0

要强制重新加载权限(并授权他们),您可以将'&auth_type = rerequest'添加到login_url的末尾。 对于生产,应用程序只允许使用一次,但在开发过程中,您应该可以根据需要随时进行此操作。 –