Javascript 从Google用户信息端点获取401
我正在尝试让用户授权应用程序进行“脱机”访问 我将令牌url设置为“https://oauth2.googleapis.com/token". 我使用诸如一次性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' } 我从上面的响
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”,“我不想继续复制这个问题。我需要知道为什么它不能像我想要的那样工作,这样我才能修复它。