【问题标题】:google api with javascript. get birthday and gender [duplicate]带有 javascript 的谷歌 api。获取生日和性别[重复]
【发布时间】:2016-03-07 11:54:50
【问题描述】:

我认为它一定很简单,但找不到示例。
我正在使用基本的谷歌登录示例。带有标题标签(包括生日范围):

<meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/user.birthday.read" />
<meta name="google-signin-client_id" content="xxx my id xxx" />
<script src="https://apis.google.com/js/platform.js" async defer></script>

以及 html 正文中的默认登录按钮:

<div id="gsignin" class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div>

和js:

  function onSignIn(googleUser) {
        var profile = googleUser.getBasicProfile();
        console.log(googleUser);
        console.log("ID: " + profile.getId());
        console.log("Name: " + profile.getName());
        console.log("Image URL: " + profile.getImageUrl());
        console.log("Email: " + profile.getEmail());
        g_token = googleUser.getAuthResponse().id_token;
  }

这一切都很好,用户被要求授予权限。我得到了一般的个人资料信息。但我不确定如何获得生日日期,它是否在返回的对象中?我需要再次调用 api 吗?
我看过很多关于使用范围的示例,但找不到如何实际读取数据(生日日期)......性别也一样,不要认为有特殊的范围那,我想它应该是基本个人资料信息的一部分(?)
提前致谢

编辑: 澄清一下,我知道我使用了正确的范围。我不知道如何读取数据。例如,用户通过身份验证后 - profile.getEmail() 将返回电子邮件。什么会返回生日?

【问题讨论】:

  • 生日在 JSON 中并不总是可用的。只有共享生日的用户才拥有生日属性。
  • 你的问题没有问范围,但答案是一样的。
  • 谢谢。你能详细说明一下吗?假设它是公开的,我会在 profile.getBirthday() 中找到它吗?还是我需要打另一个电话

标签: javascript google-api


【解决方案1】:

GoogleUser.getBasicProfile()获取用户的基本资料。

返回
一个 gapi.auth2.BasicProfile 对象。你可以找回这个 对象的属性使用以下方法:
BasicProfile.getId() BasicProfile.getName()
BasicProfile.getImageUrl()
BasicProfile.getEmail()

此方法不返回生日。我知道找回生日的唯一方法是使用 google+ api 中的people.get

【讨论】:

  • 我是否需要使用另一个库来初始化另一个/不同的 gapi 对象?我有一个“实时”的 gapi 对象,我猜它是由包含的脚本 apis.google.com/js/platform.js 创建的,但如果我尝试 gapi.client.load('plus', 'v1', function () {...});,我会收到 js 错误“无法读取未定义的属性‘加载’”
  • 是的,你需要一个不同的服务,一个 google+ api 服务github.com/googleplus/gplus-quickstart-javascript/blob/master/…我不是一个 JavaScript 专家,虽然它是官方示例项目,但我发现你。
  • 在 api 管理器中添加 Google+ api 并将 ref 添加到 apis.google.com/js/client.js 之后,我现在可以调用 gapi.client.load('plus', 'v1', function () {...}); 但我仍然没有在回复中得到生日,尽管我确保它是公开的(在我自己的帐户上进行测试)。奇怪的是,我现在同时使用了 client.js 和 platform.js,我猜有 2 个“活”的 gapi 对象。不要认为这是预期的实现......
  • 让它工作。我的公共设置不正确。仍然不清楚这 2 个登录选项和 2 个脚本引用,Google+ 登录是否应该取代 Google 登录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
相关资源
最近更新 更多