javascript - 如何使用谷歌登录?

标签 javascript node.js oauth-2.0 google-oauth axios

我正在尝试在 Node.js 应用程序中不使用任何库的情况下实现 google oauth 2.0 登录。

我在 Google API 控制台上创建了一个应用程序,重定向 URL 为 http://localhost:3000。登录期间,我的 response_typecode,它返回一次性使用代码,需要与 token_endpoint 进行交换,如 here 中所述。 。 交换是在我的 Node.js 服务器上使用以下代码片段完成的。

axios({
    url: 'https://www.googleapis.com/oauth2/v4/token',
    method: 'post',
    data: {
      code: code,
      client_id: sso.clientId,
      client_secret: sso.clientSecret,
      redirect_uri: sso.redirect_uri,
      grant_type: 'authorization_code',
    }
  })
  .then((response) => {
    console.log(response.data);
  })
  .catch(function(err) {
    console.log(err.response.data);
  });
但这是给我发回

的错误响应
{
  "error": "unsupported_grant_type",
  "error_description": "Invalid grant_type: "
}

而不是用户 token 。

请帮我找出问题所在。

我尝试在 raw 中使用相同的负载进行 POSTMAN 查询,内容类型设置为 application/json,但它给了我同样的错误。

最佳答案

在通过 axios 进行交换调用时,您需要使用 params 代替您的 data,修改后的 block 将类似于

params: {
    code: code,
    client_id: sso.clientId,
    client_secret: sso.clientSecret,
    redirect_uri: sso.redirect_uri,
    grant_type: 'authorization_code',
}

希望这有帮助!

关于javascript - 如何使用谷歌登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129835/

相关文章:

javascript - 根据头的等级重新排序数组元素

javascript - 如何停止 iOS 主屏幕链接上的弹性滚动(又名滚动反弹,又名页面过度滚动效果)?

javascript - 如何从 Java 小程序访问 JavaScript 中定义的对象/数组

javascript - Jquery: Uncaught TypeError: Object #<Object> 没有方法 'quicksand'

node.js async.series 不工作

javascript - 使用 grunt 在静态服务器上运行 Qunit 测试时遇到问题

javascript - 如何在 `filter` 内使用可观察值?

android - 在我自己的 REST API 上验证从 Facebook 收到的凭据

android - Cordova Android 应用程序从 MobileFirst 8.0 服务器获取 "invalid_client"

php - oauth-private.key 不存在或不可读