Facebook Graph API getAccessToken()不起作用

时间:2011-08-07 09:03:58

标签: facebook facebook-graph-api facebook-access-token

过去几天我一直在使用Graph API。当我尝试使用PHP-SDK进行API调用时,我得到一个空的json对象作为响应。但是当我从http://developers.facebook.com/docs/reference/api/中的FB提供的链接复制访问令牌时,我得到了一个json响应。

我认为这是因为我在请求中发送的访问令牌。 帮助感谢。

我的代码:

include_once "fbInit.php";
$access = $facebook->getAccessToken();
$user = $facebook->getUser();
echo $access;
if(!$user)
{
$loginUrl = $facebook->getLoginUrl();
header("Location:".$loginUrl);
}
$userWall = $facebook->api('/me/feed',array('access_token'=>$access))   ;
var_dump($userWall);

3 个答案:

答案 0 :(得分:1)

getAccessToken()仅返回SDK中内部存储的访问令牌,它不会生成或获取一个。使用SDK的一个优点是,您不需要直接传递访问令牌,就像您在示例结束时所做的那样。一旦用户单击getLoginUrl()生成的链接,访问令牌将自动存储在SDK中,api方法将起作用。但是,发布到用户的墙需要的参数多于传入的参数。您可以在https://developers.intern.facebook.com/docs/reference/php/facebook-api/

最近发布的PHP SDK文档中看到如何执行此操作的完整示例

答案 1 :(得分:1)

这对我有用:

的index.php

<?php
    require_once("./config.php");
    $me = $facebook->api('/me');
    $access_token = $facebook->getAccessToken();
    $user = $facebook->getUser();
    $userWall = $facebook->api('/me/feed',array('access_token'=>$access_token));
    var_dump($userWall);
?>

的config.php

<?php
    require_once("facebook.php");

    $app_id = "app_id";
    $app_secret = "app_secret";

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

    if(is_null($facebook->getUser()))
    {
        header("Location:{$facebook->getLoginUrl(array('req_perms' => 'user_status,publish_stream,user_photos'))}");
        exit;
    }
?>

答案 2 :(得分:0)

api假设为你获取访问令牌 - 它在base_facebook.php第664行形成一个access_token图形api。不幸的是,由于你的重定向uri,这个api调用可能会失败 - 有人提到你不应该有“? “在您的重定向uri和我的情况下 - 有一个尾部“/”,导致此调用失败。如果你通过“https://graph.facebook.com/oauth/access_token?”直接打电话,同样的重定向uri也没问题。

尝试在base_facebook.php中的_graph()函数中输入一个日志来打印来自facebook的响应结果,这将帮助您快速确定是否遇到了与我相同的问题。