使用Facebook Graph API进行身份验证

时间:2017-01-02 03:48:04

标签: php facebook-graph-api facebook-access-token

我需要从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或我应该如何使用它。我在上面的代码中仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

{{1}}