Недопустимый токен доступа к Facebook
Я пытаюсь использовать API-интерфейс Facebook для захвата фотоальбомов из Facebook и разместить их на веб-сайте, над которым я работаю. Я использую PHP как свой язык с картой Codeigniter и перенаправляю URL-адрес Facebook, чтобы получить токен доступа для пользователя. Facebook возвращает токен доступа, и я его беру и вставляю в свою базу данных.
При этом, когда я пытаюсь захватить данные JSON для фотоальбома, перейдя к URL-адресу графика, он возвращает ошибку. URL-адрес графика и ошибка:
https://graph.facebook.com/1298926000574/photos?access_token=[MY ACCESS TOKEN]
My access token: AQBxqdB64GHNTGY5Yp_IOuMY7NerwNtXVVrp2HwT1qXj02zqU-63KJDyB2jzqurlJ4M0vd7TAu7upA6T7ZYQzIChr2PgD1dpu-6Iebi0WVILbBSBOu-yj7sgcHSGS-Ew4Yio0I9In-1O5jOxbYLDMbI0Zmwk-F1-u-7a8iVvTJram8PvpmdRt5eg
Returned error:
{
"error": {
"message": "Malformed access token [MY ACCESS TOKEN]",
"type": "OAuthException",
"code": 190
}
}
Я действительно не уверен, почему Facebook продолжает возвращать мне эту ошибку. Маркер доступа довольно длинный, и я сохраняю его в своей базе данных как поле "текст". Я последовал их указаниям, и теперь они стреляют в меня ногой. Любая помощь будет высоко оценена.
Ответы
Ответ 1
У меня была такая же проблема, и я нашел это сообщение для поиска решения. Я заметил, что "наш" токен доступа содержит много нечетных символов, в то время как другие - это просто буквенно-цифровая строка.
Я считаю, что ошибка, которую вы сделали (и я), смешивала код с access_token
После отправки пользователю facebook в ваш api для подтверждения доступа, они возвращаются на ваш сайт с помощью $_GET['code']
. Этот код необходимо проверить с помощью Facebook, который вернет access_token успех.
$app_id = [YOUR_APP_ID];
$app_secret = [YOUR_APP_SECRET];
$my_url = [THE_SAME_AS_THE_POST_BEFORE];
$code = $_GET['code'];
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;
$response = file_get_contents($token_url);
$params = null;
json_decode($response, $params);
$access_token = $params['access_token'];
Дополнительная информация о выборе access_token с PHP
Дополнительная информация об использовании правильного redirect_uri
Ответ 2
Один плагин wp возвращал ту же ошибку, и это было решение, оно может быть связано с вашей проблемой:
Php запрашивает access_token, а серверы facebook возвращают его.
Возвращенное сообщение, содержащее access_token USED, похоже на:
access_token=.......
Но для вновь созданных приложений (2012) возвращаются серверы facebook:
access_token=.....&expires=.....
Если ваш код анализирует это неправильно, как в
$access_token=str_replace('access_token=','',$message);
то ваш $access_token ошибочно содержит дополнительные & expires и т.д.
его следует проанализировать следующим образом:
parse_str($message,$ar); $access_token=$ar['access_token'];
Ответ 3
У меня была та же проблема. Понял, как он работает и здесь для тех, кто погружается в ту же грязь.
require 'facebook-php-sdk/facebook.php';
$facebook = new Facebook(array(
'appId' => 'APP ID',
'secret' => 'SECRET KEY',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
$accessToken = $facebook->getAccessToken();
try {
$url = "https://graph.facebook.com/1298926000574/photos?access_token=".$accessToken;
$photos = $facebook->api($url);
var_dump($photos);
} catch (FacebookApiException $e) {
$user = null;
}
}
} else {
//echo "You need to login";
header("Location:".$facebook->getLoginUrl());
}
Ответ 4
Вы отправляете code
вместо access_token
в свой запрос.
Решение для пользователей Laravel Socialite:
Использование:
$response = Socialite::driver($provider)->getAccessTokenResponse($request['code']);
$user = Socialite::driver($provider)->userFromToken($response['access_token']);
Вместо:
$user = Socialite::driver($provider)->user();
Ответ 5
Как сказано в сообщении об ошибке, исключение с ошибкой означает ошибку при форматировании request
.
https://graph.facebook.com/me/photos/?access_token=[your_accesstoken]
Итак, это было бы как
https://graph.facebook.com/me/photos/?access_token=AQBxqdB64GHNTGY5Yp_IOuMY7NerwNtXVVrp2HwT1qXj02zqU-63KJDyB2jzqurlJ4M0vd7TAu7upA6T7ZYQzIChr2PgD1dpu-6Iebi0WVILbBSBOu-yj7sgcHSGS-Ew4Yio0I9In-1O5jOxbYLDMbI0Zmwk-F1-u-7a8iVvTJram8PvpmdRt5eg