Javascript 从Google用户信息端点获取401

Javascript 从Google用户信息端点获取401,javascript,oauth-2.0,jwt,google-oauth,userinfo,Javascript,Oauth 2.0,Jwt,Google Oauth,Userinfo,我正在尝试让用户授权应用程序进行“脱机”访问 我将令牌url设置为“https://oauth2.googleapis.com/token". 我使用诸如一次性code、client\u id、client\u secret、scopes等参数来获取包含令牌的响应。如下所示: { access_token: ..., expires_in: 3599, refresh_token: ..., scope: ..., token_type: 'Bearer' } 我从上面的响

我正在尝试让用户授权应用程序进行“脱机”访问

我将令牌url设置为“https://oauth2.googleapis.com/token". 我使用诸如一次性
code
client\u id
client\u secret
scopes
等参数来获取包含令牌的响应。如下所示:

{
  access_token: ...,
  expires_in: 3599,
  refresh_token: ...,
  scope: ...,
  token_type: 'Bearer'
}
我从上面的响应中获取访问令牌值,并尝试使用它从https://www.googleapis.com/oauth2/v1/userinfo?alt=json“而且它总是返回401

我使用代码和curl完成了这项工作,试图将令牌作为

const headers = {
  Authorization: `Bearer ${accessToken}`
};
const userInfo = await fetch('https://www.googleapis.com/oauth2/v1/userinfo?alt=json',{headers});
并尝试将access_令牌添加到查询字符串中,以及针对较新的端点执行,如
https://www.googleapis.com/oauth2/v2/userinfo?alt=json
https://www.googleapis.com/oauth2/v4/userinfo?alt=json

我总是拿到401。消息是:
请求缺少所需的身份验证凭据…


我应该怎么做呢?

userinfo端点是一个HTTP GET调用,您可以将访问令牌串起来作为查询参数

https://openidconnect.googleapis.com/v1/userinfo?access_token=ya29.a0AfH6SMDfRQFdEOxq97LXqUa1jwdtRLSD2l_hiLFeaWYXRBB6gIkh7XHko75xj70uPnuOppKtf0c 
回应

{
  "sub": "1172004755326746",
  "name": "Linda Lawton",
  "given_name": "Linda",
  "family_name": "Lawton",
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GhroCYJp2P9xeYeYk1npchBPK-zbtTxzNQo0WAHI20\u003ds96-c",
  "locale": "en"
}

BTW,您可能想考虑使用它比USER信息终结点要稳定得多。

如果您有访问令牌的值,您可以用简单的卷曲命令来复制这个问题:CURL -H“授权:承载您的Access”,“我不想继续复制这个问题。我需要知道为什么它不能像我想要的那样工作,这样我才能修复它。