2016-09-16 2 views
1

Я пытаюсь реализовать социальный логин на стороне сервера, используя Auth0, и я застрял с шагом 3 из this guide. Я получаю обратный вызов из предыдущих шагов со значением http://mywebsite/login?code=bLvc4EmsaezBp1sN&state=UXZ8DfOZeRNGy4AKD4DsaS0n#_=_, но когда я отправляю значение code на моем сервере в конечную точку Auth0 /oauth/token, я получаю ответ {"error":"invalid_grant","error_description":"Invalid authorization code"}.Auth0 0Auth Social Flow - недействительный код авторизации

Из примеров, которые я видел, я считаю, что мой код слишком короткий. Что я здесь делаю неправильно?

Wreck.post(`https://company-dev.eu.auth0.com/oauth/token`, { 
     payload: { 
     client_id: client_id, // rknvAeGruVDG3To0Lc37hMuDKsUNBBBV (too short?) 
     code: code, // Sl9fF6grhgDoecDt 
     redirect_uri: redirect_uri, // http://localhost:3000/login 
     grant_type: grant_type, // 'authorization_code' 
     client_secret: client_secret, // Shh, secret 
     state: state // 123ABC123 
     } 
    }, (err, res, payload) => { 
     if (err) { 
     console.log(err); 
     reject(); 
     } 

     console.log(payload.toString('utf8')); 
     resolve(); 
    }); 

Редактировать: Поскольку реализована ошибка моих способов, и параметры были перемещены в URL.

Теперь я получаю ошибку Unauthorized

+0

Можете ли вы опубликовать свой код и/или тело POST, которое вы отправляете в/oauth/token БЕЗ вашего секретариата клиента? – neverendingqs

+0

@neverendingqs Обновлен OP! –

+0

«Полезная нагрузка» автоматически преобразуется в 'application/x-www-form-urlencoded' (а не' application/json'?) – neverendingqs

ответ

0

401 обычно означает, что client_id/client_secret является недействительным. Проверьте эти значения.

Это также может означать, что redirect_uri не соответствует ни одному из зарегистрированных вами (trailing / s может и не иметь значения).

От the docs you linked:

redirect_uri должен соответствовать тому, что определяется на странице настроек. http://localhost - действительный адрес, и Auth0 позволяет одновременно вводить множество адресов.

Боковые ноты:

  • Параметр state не требуется для того, что вы делаете здесь (маркер доступа запрос)
  • Пожалуйста, убедитесь, что ваш параметр state криптографически безопасный для CSRF reasons, и что state в ответ на код авторизации, вы получаете то же самое state, которые были отправлены в запрос на код авторизации
Смежные вопросы