Подтвердить что ты не робот

Недопустимый токен доступа к 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 продолжает возвращать мне эту ошибку. Маркер доступа довольно длинный, и я сохраняю его в своей базе данных как поле "текст". Я последовал их указаниям, и теперь они стреляют в меня ногой. Любая помощь будет высоко оценена.

4b9b3361

Ответ 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