在我的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请求?
答案 0 :(得分:1)
SDK隐式添加指定给路径的API版本号 - > get(),所以我认为这会导致你的错误,因为正在对/2.5/oauth/access_token
进行基础调用(在浏览器中对我失败)
它应该是/v2.5/oauth/access_token
(在浏览器中适合我)
将default_graph_version
更新为v2.5
并尝试