Я сталкиваюсь со странной проблемой при попытке выполнить расширенный процесс входа в систему с использованием API Facebook с долгоживущими токенами, хранящимися на моем сервере (https://developers.facebook.com/docs/facebook-login/access-tokens#long-via-code)
Проблема заключается в следующем: после отправки сгенерированного кода обратно моему клиенту (в данном случае веб-приложению JS) я должен вызывать API-интерфейс графа для создания долгоживущего токена. Мой звонок выглядит примерно так:
var requestUri = "/oauth/access_token?code=" + code + "&client_id=" + facebookAppId + "&redirect_uri=" + redirectUrl;
FB.api(requestUri, function(response) {
console.log(response);
});
Однако при обратном вызове этого запроса FB.api я получаю ответ, который выглядит следующим образом:
{
"error": {
"message": "unknown error",
"type": "http"
}
}
В консоли также есть ошибка JS:
Uncaught SyntaxError: Unexpected token :
Что действительно странно во всем этом, так это то, что если я посмотрю на необработанный ответ на вызов /oauth/access_token, я увижу ожидаемый ответ с кодом успеха 200.
{
"access_token": "...",
"machine_id": "...",
"expires_in": 5184000
}
Из этого я могу определить, что ответ JSON неправильно читается моим браузером (в данном случае Chrome). На самом деле, если я вставлю необработанный ответ выше в консоль Chrome Dev JS, он выдаст ту же ошибку JS. Однако, если бы я присвоил его переменной в консоли, проблем не возникло бы. В основном кажется, что что-то идет не так в JS SDK Facebook, и объект ответа никогда не возвращается должным образом в функцию обратного вызова. Кто-нибудь сталкивался с чем-то подобным раньше? Кажется, я не могу найти ответ на этот вопрос.