使用Javascript解码Google Oauth2访问令牌

时间:2015-07-01 23:26:51

标签: javascript oauth google-api-client

我想在google oauth2用javascript给出的访问令牌(given_name,family_name,email,userid ....)中显示所有信息。

有没有一个好的示例/演示已经完成了?如果没有,那么在oauth2上使用javascript登录时,解码访问令牌的最佳方法是什么。

我发现这个显示名称和个人资料图片的示例,但我不明白他们是如何做到的: (http://www.gethugames.in/blog/2012/04/authentication-and-authorization-for-google-apis-in-javascript-popup-window-tutorial.html

2 个答案:

答案 0 :(得分:0)

该信息不在令牌中,这就是用作授权证明的令牌,而且大多数或所有Google API都需要每小时刷新一次。该令牌证明用户已授权Google将该信息提供给该计划。

在该示例步骤5中,对getUserInfo()的调用将令牌传递回Google。对于工作调用和获取信息,用户必须先前已授予该权限:

USERINFO_SCOPE: 'https://www.googleapis.com/auth/userinfo.profile'

权限与申请相关,授权也是如此。

答案 1 :(得分:0)

您可以通过此功能解码-

const {OAuth2Client} = require('google-auth-library');
const client = new OAuth2Client(CLIENT_ID);
async function verify() {
  const ticket = await client.verifyIdToken({
      idToken: token,
      audience: CLIENT_ID,
  });
  const payload = ticket.getPayload();
  const userid = payload['sub'];
  console.log(userid);

}
verify().catch(console.error);

输出为:-

{ iss: 'accounts.google.com',
  azp:
   '89838985845-261g3g9ob1244uvajvvj4fkueehhdfhsj.apps.googleusercontent.com',
  aud:
   '89838985845-261g3g9ob1244uvajvvj4fkueehhdfhsj.apps.googleusercontent.com',
  sub: '1001728418648724577297',
  email: 'rajputankit22@gmail.com',
  email_verified: true,
  at_hash: 'y0_OmfSbg-iHOq__Km-5kw',
  name: 'Ankit Kumar Rajpoot',
  picture:
   'https://lh3.googleusercontent.com/a-/AAuE7mBrCW_ubLUHpnqwQZ1DvLDb9E4IHxfy43K6amNwt1Q=s96-c',
  given_name: 'Ankit',
  family_name: 'Kumar Rajpoot',
  locale: 'en',
  iat: 1580591026,
  exp: 1580594626,
  jti: 'fbbfca7sghsdhjfghsdfgh74888jhsd88s986d9876b30d' }