这是我的PHP代码。登录过程后,我想显示最新的墙帖子。
$fb = new Facebook'Facebook([
'app_id' => 'xxxxxxxx',
'app_secret' => 'xxxxxxxxxxx',
'default_graph_version' => 'v2.4',
'default_access_token' => isset($_SESSION['facebook_access_token']) ? $_SESSION['facebook_access_token'] : 'xxxxxxxxxxxxxx|xxxxxxxxxxxxxxxxxxxxx'
]);
try {
// $response = $fb->get('/me?fields=id,name,email');
// $user = $response->getGraphUser();
// echo 'Name: ' . $user['name'];
// echo 'Email: ' . $user['email'];
// echo 'ID: ' . $user['id'];
$data = ( new Facebook'FacebookRequest( $_SESSION['facebook_access_token'], 'GET', '/me/posts') )->execute()->getGraphObject()->getPropertyAsArray("data");
foreach ($data as $post){
$postId = $post->getProperty('id');
$postMessage = $post->getProperty('message');
print "$postId - $postMessage <br />";
}
exit; //redirect, or do whatever you want
} catch(Facebook'Exceptions'FacebookResponseException $e) {
//echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook'Exceptions'FacebookSDKException $e) {
//echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes', 'user_about_me'];
$loginUrl = $helper->getLoginUrl('http://attila-naghi.com/facebook/login.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
但是我得到了这个错误信息:
Catchable fatal error: Argument 1 passed to
Facebook'FacebookRequest::__construct() must be an instance of
Facebook'FacebookApp, string given, called in....
第97行。这是我的类的第97行内容:
public function __construct(FacebookApp $app = null, $accessToken = null, $method = null, $endpoint = null, array $params = [], $eTag = null, $graphVersion = null)
{
$this->setApp($app);
$this->setAccessToken($accessToken);
$this->setMethod($method);
$this->setEndpoint($endpoint);
$this->setParams($params);
$this->setETag($eTag);
$this->graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION;
}
我猜我没有以正确的方式将我的令牌从会话传递给构造函数。但我不明白为什么?谁能给我解释一下它是怎么工作的?这不是facebook sdk中最好的文档。
第一个参数需要是FacebookApp
变量,而不是令牌。因此将这一行改为:
$data = ( new Facebook'FacebookRequest( $fb, $_SESSION['facebook_access_token'], 'GET', '/me/posts') )->execute()->getGraphObject()->getPropertyAsArray("data");