В моем приложении PHP пользователи предоставляют свой собственный идентификатор приложения Facebook и приложение Secret. Мне нужно проверить их и показать хорошую ошибку, если они недействительны.
Я уже нашел хороший способ сделать это. Я могу сделать запрос на 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
Но даже если это сработало, странно назвать это с помощью любых учетных данных отправителя. Возможно ли сделать анонимный запрос Facebook с PHP SDK?
SDK неявно добавляет номер версии API, указанный в пути в -> get (), поэтому я думаю, что это вызывает вашу ошибку здесь, потому что основной вызов выполняется в /2.5/oauth/access_token
(сбой для меня в браузере)
Это должно быть /v2.5/oauth/access_token
(работает для меня в браузере)
Обновите default_graph_version
до версии v2.5
и попробуйте