AWS Cognito TOKEN端点给出400错误请求错误“ unauthorized_client”

时间:2019-09-22 14:09:59

标签: amazon-web-services amazon-cognito

在成功获取验证码之后,遵循https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html中的文档。

据我所知,这正是应该如何设置请求:

import request from 'request'

function fetchToken(code: any, clientId: string, clientSecret: string) {
  try {
    let tokenEndpoint = `https://example.auth.us-east-1.amazoncognito.com/oauth2/token`
    const clientIdEncoded = Buffer.from(`${clientId}:${clientSecret}`).toString('base64')

    request.post({
      url:tokenEndpoint,
      headers: {
        'Content-Type':'application/x-www-form-urlencoded',
        'Authorization':`Basic ${clientIdEncoded}`
      },
      form: {
        code,
        'grant_type':'authorization_code',
        'client_id':clientId,
        'redirect_uri':'http://localhost:3000'
      }},
      function(err,httpResponse,body){
        console.log(httpResponse.statusCode)
        //400
        console.log(httpResponse.statusMessage)
        //Bad Request
        if(err) {
          console.error(err)
        }

        console.log(body)
        //{"error":"unauthorized_client"}
      })
  } catch (error) {
    console.error(error)
  }
}

为什么会得到unauthorized_client?有没有更简单的方法可以调试它?

编辑:在邮递员中以相同的请求并得到相同的错误进行了测试

标题 Header 身体 Body

1 个答案:

答案 0 :(得分:1)

请检查Cognito用户池应用程序是否正在使用密钥。如果您使用密钥创建选项,则必须将其包含在请求的Authorization标头中。