【问题标题】:How to get real name from Google API via Node Client如何通过 Node Client 从 Google API 获取真实姓名
【发布时间】:2017-12-06 02:49:00
【问题描述】:

我的网络应用允许使用 Google 帐户注册/登录。我正在使用以下代码从 Google 获取用户信息:

var scopes = ['profile', 'email'];
var url = oauth2Client.generateAuthUrl({ access_type: 'offline', scope: scopes });

router.route('/authorize').post((req, res) => {
  code = req.body.code;
  oauth2Client.getToken(code, (err, tokens) => {
    if (err) return // error handler
    oauth2Client.verifyIdToken(tokens.id_token, clientId, (err, login) => {
      if (err) return // error handler
      console.log(login.getPayload()); // this gives me the JSON object below
    });
  });
});

我尝试添加不同的范围,但我总是得到相同的信息,其中不包括用户的真实姓名:

{ azp: 'stuffblahblah',
  aud: 'stuffblahblah',
  sub: 'google-id-here',
  email: 'email@address.com',
  email_verified: true,
  at_hash: 'some-hash',
  iss: 'accounts.google.com',
  iat: 1234567890,
  exp: 1234567890 }

【问题讨论】:

    标签: javascript node.js authentication authorization google-signin


    【解决方案1】:

    尽管一些文档表明可以在 id_token 中获取真实姓名等信息(请参阅 https://developers.google.com/identity/sign-in/android/backend-auth),但我无法使用 .getToken 方法返回该信息。但是,我可以通过访问令牌在单独的请求中请求信息来获取它:

    let url = 'https://www.googleapis.com/oauth2/v3/userinfo?access_token=' + access_token;
    request(url, (err, response, body) => {
      if (err) console.log('error');
      console.log(body);
    });
    

    身体是这样的:

    { 
      "sub": "4319874317893142", 
      "name": "My Real name", 
      "given_name": "My First Name",
      "family_name": "My Last Name",
      "profile": "https://plus.google.com/link_to_my_profile",
      "picture": "https://lh4.googleusercontent.com/link_to_my_pic.jpg",
      "email": "email@address.com",
      "email_verified": true,
      "gender": "male",
      "locale": "en"
    }
    

    仍然希望有一种方法可以在我最初的请求中获取真实姓名,而不必单独创建一个,但这已经足够了。

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 2021-01-16
      • 2021-12-17
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多