我正在使用最新的 Facebook PHP SDK 做一个非常简单的 PHP 应用程序,旨在显示我的页面的状态数。
为此,我创建了一个应用程序来拥有应用程序 ID 和应用程序机密,但在我有点迷路之后。
我以为我需要一个应用程序秘密令牌,所以我首先尝试这样:
<?php
public function getFacebookPosts() {
require __DIR__ . '/libs/facebook-sdk/facebook.php';
$appId = 'myID';
$appSecret = 'mySecret';
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $appSecret,
));
$token = $this->getFacebookAppToken($appId, $appSecret);
try {
$jinnove = $facebook->api('/my.page');
$fql = '/fql?q=SELECT+status_id+FROM+status+WHERE+uid=' . $jinnove['id'] . '&' . $token;
var_dump($facebook->api($fql));
} catch(FacebookApiException $e) {
var_dump($fql, $e);
}
}
/**
* Function to Get Access Token from Facebook
* @param $appId
* @param $appSecret
* @return string
*/
protected function getFacebookAppToken($appId, $appSecret)
{
$args = array(
'grant_type' => 'client_credentials',
'client_id' => $appId,
'client_secret' => $appSecret
);
$ch = curl_init();
$url = 'https://graph.facebook.com/oauth/access_token';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
return $data;
}
但它返回错误 102 并显示以下消息:“请求此资源需要用户访问令牌。”。
然后我在 IRC 上询问,有人告诉我我需要一个用户访问令牌才能做到这一点。
据我所知,只有当用户明确登录 Facebook 以授权此应用并有时更新令牌时,才能生成用户访问令牌。
真的吗?有没有办法使用不暗示要登录用户的令牌?基本上任何人都可以查看这个数量的状态,即使是没有 Facebook 帐户并且我根本不需要 UI 对话框的人。