我需要从Facebook页面上删除一些帖子并将其显示在我的网站上。我正在考虑使用Facebook Graph API,但我有点挣扎,文档和各种教程似乎假设我将设置一个登录流程,首先要求用户登录我的网站。但那不是我需要的。我需要我的服务器端应用程序(通过Facebook进行身份验证)并定期获取任何新帖子。
我发现应该可以通过使用页面令牌来获取长期令牌,但是现在我甚至无法弄清楚如何使用常规的短期令牌进行身份验证。
所以我设置了一个测试应用程序以获取应用程序ID和密码,然后前往Facebook Graph API Explorer获取我用于创建应用程序的用户的身份验证令牌。
以下是我用来测试连接Graph 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();
当我运行我的代码时,我收到此消息:
图表返回错误:API参数
中提供的appsecret_proof无效
我已经三次检查$app_id
和$app_secret
是我创建应用时给出的值,并且我已经对我的访问令牌进行了三次检查(尝试使用我的个人用户令牌以及我通过Graph API Explorer获得的页面令牌。
我发现了另一个SO线程,建议我手动生成一个appsecret证明,所以我这样做了:
$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
]);
我不确定是否应将$appsecret_proof
传递给app_secret
或我应该如何使用它。我在上面的代码中仍然遇到同样的错误。
答案 0 :(得分:0)
{{1}}