首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OAuth2.0令牌post请求正在响应401 (invalid_client)

OAuth2.0令牌post请求正在响应401 (invalid_client)
EN

Stack Overflow用户
提问于 2020-07-28 10:56:21
回答 1查看 238关注 0票数 0

我对Google OAUth2.0认证非常陌生,因此我的问题听起来很愚蠢。然而,我被这个问题困扰了很长一段时间,需要你的意见来解决它。

我在my app中集成了Globus登录。使用Google OAuth-2协议进行身份验证的Globus登录。根据Globus Auth developer guide,我成功地将应用程序重定向到他们的授权服务,用户可以将他们的凭据放入身份验证,并且应用程序在身份验证成功后收到从Globus Auth服务器返回的代码。下一步是将代码发送到令牌端点以获取访问令牌。我使用了以下代码:

代码语言:javascript
复制
var querystring = require('querystring');    
export const logInGlobus = (payload) => {
let tokenUri = encodeURIComponent(payload.redirect_uri);
let client_id = 'out app client id'
let client_secret = 'client secret generated for authentication'
let cred = btoa(client_secret);

return axios.post('https://auth.globus.org/v2/oauth2/token',
querystring.stringify({
    grant_type: 'authorization_code',
    code: payload.code,
    redirect_uri: tokenUri,
    client_id: client_id
}),
{
    headers:{
        Authorization: 'Basic '+ cred,
        'Content-Type': 'application/x-www-form-urlencoded'
      }
})
 .then(response => {
     return{
         res: response,
         success: true
     }
 })
 .catch(err => {
     return{
         res: err,
         success: false
     }
 })

}

我从服务器得到了此post请求的401 {"error":"invalid_client"}代码。我遗漏了什么?

注意:我试过了,没有客户端密码,客户端id,没有编码重定向URL。不走运,所以far>

如果你能给我点光,我会非常感谢你的努力。耽误您时间,实在对不起。

====Edited====

附加了来自浏览器控制台的错误

EN

回答 1

Stack Overflow用户

发布于 2020-07-28 22:41:33

我解决了这个问题。我必须将客户端密码放在post请求的正文中。下面的代码解决了我的问题。

代码语言:javascript
复制
var querystring = require('querystring');

export const logInGlobus = (payload) => {
let client_id = 'app client id'
let client_secret = 'client secret generated for authentication'

return axios.post('https://auth.globus.org/v2/oauth2/token',
querystring.stringify({
    grant_type: 'authorization_code',
    code: payload.code,
    redirect_uri: payload.redirect_uri,
    client_id: client_id,
    client_secret: client_secret
}),
{
    headers:{
        'Content-Type': 'application/x-www-form-urlencoded'
      }
})
 .then(response => {
     return{
         res: response,
         success: true
     }
 })
 .catch(err => {
     return{
         res: err,
         success: false
     }
 })

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63126365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档