私はFacebookのページからいくつかの投稿を取り出し、私のウェブサイトに表示する必要があります。私はこのためにFacebook Graph APIを使用していますが、少し苦労しています。ドキュメントやチュートリアルのすべての種類は、まずユーザーに自分のWebサイトにログインするように要求するためのログインフローを設定すると思われます。しかし、それは私が必要なものではありません。私は私のサーバー側のアプリケーションがFacebookで認証されている(滞在中)必要があり、定期的に新しい投稿を取得します。Facebook Graph APIで認証する
ページトークンを使用して長寿命のトークンを取得することが可能であることがわかりましたが、今では通常の短命トークンを使用して認証する方法を理解できません。
私はアプリIDとシークレットを取得するためのテストアプリをセットアップし、Facebook Graph API Explorerに行って、アプリの作成に使用したユーザーの認証トークンを取得しました。ここで
は、私は、接続グラフAPIをテストするために使用している基本的なコードです:私は私のコードを実行すると
(...)
$fb = new \Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => '2.8',
'default_access_token' => $app_access_token
]);
try {
$response = $fb->get('/me');
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$me = $response->getGraphUser();
私はこのメッセージを得る:
Graph returned an error: Invalid appsecret_proof provided in the API argument
を私はトリプルチェックしましたその$app_id
と$app_secret
は、私がアプリケーションを作成したときに与えられた値で、私のアクセストークンをチェックしました(私の個人的なユーザートークンとGraph API Explorerを介して取得できたページトークンで試しました)。
app_secret
から
$appsecret_proof
を渡す必要がありますか、私はどのように使用するかどうか
$appsecret_proof= hash_hmac('sha256', $app_access_token, $app_secret);
$fb = new \Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $appsecret_proof,
'default_graph_version' => '2.8',
'default_access_token' => $app_access_token
]);
は、私はよく分からないがそれ。私はまだ上記のコードで同じエラーが発生しています。
通常、公式SDKを使用する場合、appsecret_proofに対処する必要はありません。もしそうでなければ、それをすべてのAPIコールに追加する必要があります。 – luschn
ええ、ドキュメントからわかるように、必須ではありませんが、 'appsecret_proof'が無効であることを示すエラーメッセージが表示されているので、明示的に使用すると役立つかもしれません。しかし、私は、同じかどうか、同じエラーメッセージを取得します。 – funkylaundry