- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Node/Express 应用程序中让 Google OAuth2 流程运行时,我已经被困了几个小时。基础知识相当简单:
代码
值code
换成 access_token
和 refresh_token
refresh_token
无论出于何种原因,我都无法通过上面的第 4 步,并且总是得到以下响应:
{
"error": "invalid_grant",
"description": "Bad Request"
}
有很多其他解决方案询问上述问题,但还没有解决方案对我有用:
代码
access_type
设置为offlinescope
参数application/x-www-urlencoded
是 Content-Type综上所述,以下是我的困境的具体情况:
回调 #1:http://localhost:3000/auth/google/callback (发送 代码
并运行下面的交换操作)
回调#2:http://localhost:3000/auth/google/callbacktwo (应该返回 access_token
和 refresh_token
)
交换操作:针对请求模块进行了调整
{
method: 'POST',
uri: 'https://www.googleapis.com/oauth2/v4/token',
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
body: {
'code': req.query.code,
'redirect_uri': 'http://localhost:3000/auth/google/callbacktwo',
'client_id': '***.apps.googleusercontent.com',
'client_secret': '***',
'scope': null,
'grant_type': 'authorization_code'
}
}
授权的重定向 URI:在 Application > Credentials > OAuth 2.0 client IDs 中可见
总而言之,我被困住了。我的设置/方法存在根本性错误,或者我是第一个遇到此错误的开发人员(后者不可能是真的)。也可以支付援助费用。
最佳答案
在一个令人震惊的事件转折中,我在上面发布后的几分钟内解决了这个问题,并进行了以下更改:
改变#1
Added 'http://127.0.0.1' variants to my Authorized Redirect URIs list
因为“127.0.0.1”等同于“本地主机”,所以我想试试看。在别处阅读。
改变#2
Changed the Exchange Action's
redirect_uri
to Callback #1, which is where thecode
was sent.
我想“如果 Google 不喜欢 redirect URI
不是它发送 code
的地方怎么办?”。
改变#3
Removed the Exchange Action's
scope
parameter
虽然它在 OAuth Playground 中清晰可见,但它不在文档中。
结果呢?收到了我找了好几个小时的东西:
{
"access_token": "****",
"expires_in": 3600,
"refresh_token": "***",
"scope": "https://www.googleapis.com/auth/userinfo.profile",
"token_type": "Bearer",
"id_token": "*****"
}
免责声明:这并不意味着以上内容对您有用,但对我有用,我会接受。
关于google-api - 谷歌 OAuth : "invalid_grant" still a thing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55066252/
我是一名优秀的程序员,十分优秀!