过去几天我一直在使用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);
答案 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的响应结果,这将帮助您快速确定是否遇到了与我相同的问题。