2

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

3 回答 3

1

这对我有用:

索引.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);
?>

配置文件

<?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;
    }
?>
于 2012-06-26T15:37:25.693 回答
1

getAccessToken() 仅返回 SDK 中内部存储的访问令牌,它不会生成或获取一个。使用 SDK 的一个优点是您不需要像在示例结束时那样直接传递访问令牌。一旦用户点击 getLoginUrl() 生成的链接,访问令牌将自动存储在 SDK 中,并且 api 方法将起作用。但是,发布到用户的墙上需要的参数多于您传入的参数。您可以在https://developers.intern.facebook.com/docs/reference/php/facebook-api/最近发布的 PHP SDK 文档中查看如何执行此操作的完整示例

于 2011-09-13T03:57:55.567 回答
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 的响应结果,这将帮助您快速确定您是否遇到与我相同的问题。

于 2011-10-03T13:46:09.393 回答