Получение & quot; Неверный формат & quot; ошибка во время аутентификации на стороне сервера в Oauth.io

У меня есть клиент javascript и серверная часть Laravel, и я использую Oauth.IO для социальной аутентификации. Я выполнил шаги, указанные здесь: http://docs.oauth.io/#authorizing-the-user-with-both-front-end-and-back-end-sdks

Я успешно получил токен по телефону generateStateToken() метод, но когда я отправляю это $this->oauth->auth() метод, который я получаю Недопустимый формат ошибка. Подскажите, пожалуйста, что означает эта ошибка и что я делаю неправильно.

Сторона клиента

var selectedAuth = 'facebook';
$.post('http://localhost/auth/v1/social', {provider: selectedAuth, get_state_token: 1}, function(data){
OAuth.popup(selectedAuth)
.done(function(result) {
console.log(result);
$.post('http://localhost/auth/v1/social', {provider: selectedAuth, code: data.token, access_token: result.access_token}, function(data){
console.log(data);
}, 'json');
})
.fail(function (err) {
//handle error with err
});
}, 'json');

Сторона сервера

// code to get the state token in a different method
$token = $this->oauth->generateStateToken();
return response()->json(['status' => 'success', 'token' => $token]);

— снип —

// code to get access token from state token in another method
$provider = 'facebook';
$request_object = $this->oauth->auth($provider, array(
'code' => $code
));
$credentials = $request_object->getCredentials();

Я подтвердил, что $code действительно имеет точный токен состояния, который я получил на 1-м шаге.
Значение $credentials как следует:

{"status":"error","data":{"code":"Invalid format"},"refreshed":false}

Пожалуйста, помогите мне здесь. Эта ошибка возникает как для Facebook, так и для Twitter, а также. Дайте мне знать, если вам нужно больше деталей.

2

Решение

Мне очень жаль, что я разместил этот вопрос. Я пропустил шаг в документации. Я оставляю этот вопрос здесь как ссылку для других на случай, если кто-то еще столкнется с той же проблемой.

Ошибка была в моем коде JavaScript. Во время звонка Oauth.popup()Мне нужно было передать маркер состояния и получить код, который затем должен был быть передан на сервер. Я отправлял на сервер токен состояния вместо кода.

Правильный код будет таким:

var selectedAuth = 'facebook';
$.post('http://localhost/auth/v1/social', {provider: selectedAuth, get_state_token: 1}, function(data){
OAuth.popup(selectedAuth, {
state: data.token
})
.done(function(result) {
console.log(result);
$.post('http://localhost/auth/v1/social', {provider: selectedAuth, code: result.code, access_token: result.access_token}, function(data){
console.log(data);
}, 'json');
})
.fail(function (err) {
//handle error with err
});
}, 'json');
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]