私のページのステータス数を表示することを目的とした最新の 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 ダイアログがまったく必要ありません。