【问题标题】:Auth0 0Auth Social Flow - Invalid authorization codeAuth0 Auth0 Socialflow - 无效的授权码
【发布时间】:2017-01-24 15:46:08
【问题描述】:

我正在尝试使用 Auth0 实现服务器端社交登录,但我被 this guide 的第 3 步困住了。我从前面的步骤中得到一个回调值http://mywebsite/login?code=bLvc4EmsaezBp1sN&state=UXZ8DfOZeRNGy4AKD4DsaS0n#_=_,但是当我在我的服务器上将code 的值提交到Auth0 端点/oauth/token 时,我得到了响应{"error":"invalid_grant","error_description":"Invalid authorization code"}。

从我看到的例子来看,我认为我的代码太短了。我在这里做错了什么?

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();
    });

编辑:由于意识到我的方式错误并且参数已移至网址。

现在我收到错误 Unauthorized

【问题讨论】:

  • 您可以在没有客户密码的情况下发布您的代码和/或您发送到 /oauth/token 的 POST 正文吗?
  • @neverendingqs 更新了 OP!
  • payload 自动转换为 application/x-www-form-urlencoded(而不是 application/json?)
  • 您的请求中除了401之外还有响应正文吗?
  • 不,只是Unauthorized

标签: oauth auth0


【解决方案1】:

401 通常意味着 client_id / client_secret 无效。请仔细检查这些值。

这也可能意味着redirect_uri 与您注册的任何一个都不匹配(尾随/s 可能重要也可能不重要)。

来自the docs you linked:

redirect_uri 必须与您的设置页面中定义的内容相匹配。 http://localhost 是一个有效地址,Auth0 允许您同时输入多个地址。

旁注:

  • 您在此处执行的操作不需要 state 参数(访问令牌请求)
  • 请确保您的state 参数对于CSRF reasons 是加密安全的,并且您收到的授权码响应中的state 与您在授权码请求中发送的state 相同

【讨论】:

    【解决方案2】:

    问题可能是您的重定向 URL。它必须与您的初始请求相同。

    事实上,在 /authorize 和 /token 调用中所有值都必须相等

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2016-12-17
      • 2017-06-12
      • 2019-02-20
      • 2017-03-24
      • 2020-03-29
      • 2019-02-04
      • 2020-06-23
      • 2019-12-09
      相关资源
      最近更新 更多