使用Facebook PHP SDK进行匿名通话

时间:2015-12-01 16:14:24

标签: php facebook facebook-graph-api

在我的PHP应用程序中,用户提供自己的Facebook应用程序ID和应用程序密钥。我需要验证它们并在它们无效时显示错误。

我已经找到了一个很好的方法。我可以向https://graph.facebook.com/oauth/access_token?client_id=123456&client_secret=abcdefg&grant_type=client_credentials

提出请求

如果凭据无效,则响应如下:

{
   "error": {
      "message": "Error validating application. Cannot get application info due to a system error.",
      "type": "OAuthException",
      "code": 101,
      "fbtrace_id": "D8oHjJoc2Nc"
   }
}

我对使用PHP SDK的方法感到困惑。有一个简洁的get()方法来提出这样的请求,但我不确定如何在未授权应用程序的情况下发送请求。这就是我所做的:

$app = new Facebook\FacebookApp( $app_id, $app_secret );

$access_token = $app->getAccessToken();

$query = http_build_query([
    'client_id'     => $app_id,
    'client_secret' => $app_secret,
    'grant_type'    => 'client_credentials',
]);

$facebook = new Facebook\Facebook( [
    'app_id' => $app_id,
    'app_secret' => $app_secret,
    'default_graph_version' => '2.5',
] );

$response = $facebook->get( '/oauth/access_token?' . $query, $access_token );

我收到以下错误:

  

未知路径组件:/ oauth / access_token

但即使它起作用,用任何发件人凭证来调用它也很奇怪。是否可以使用PHP SDK发出“匿名”Facebook请求?

1 个答案:

答案 0 :(得分:1)

SDK隐式添加指定给路径的API版本号 - > get(),所以我认为这会导致你的错误,因为正在对/2.5/oauth/access_token进行基础调用(在浏览器中对我失败)

它应该是/v2.5/oauth/access_token(在浏览器中适合我)

default_graph_version更新为v2.5并尝试