Google OAuth - 使用 Javascript 前端和服务器后端进行身份验证(授权代码流)

Google OAuth - Authenticate using Javascript Frontend and Server Backend (Authorization Code Flow)

我正在我的 JavaScript 网络应用程序中实施 Google 身份验证。我想使用 here.

中描述的身份验证代码流程

我想做的是...

  1. 用户点击一个按钮并显示同意屏幕
  2. 他点击"allow"我取回授权码
  3. 我将授权码发送到我的休息后端,以便将授权码交换到 access_token

前两个部分按预期工作得很好,但我无法让第 3 个部分工作。 我从后端调用 https://www.googleapis.com/oauth2/v3/token,发布 codeclient_idclient_secretredirect_urigrant_type (authorization_code)。这很好用,我用 fiddler(一种网络调试工具)检查了它。但是我总是得到 unauthorized_client 作为结果。

有什么想法吗?

经过大量测试和阅读,我终于明白了。

  1. 即使我执行 POST 请求以在我的后端获取访问令牌,我也需要传入参数(client_id、client_secret 等...)查询字符串不是正文。
  2. 我需要在两个请求中提供相同的 redirect_uri(获取代码和获取 access_token)

现在效果很好。