无法使用 - auth/user.phonenumbers.read 范围从用户的谷歌个人资料中读取电话号码

Posted

技术标签:

【中文标题】无法使用 - auth/user.phonenumbers.read 范围从用户的谷歌个人资料中读取电话号码【英文标题】:Can't read phone numbers from user's google profile using - auth/user.phonenumbers.read scope 【发布时间】:2018-03-21 13:41:04 【问题描述】:

根据Google People API 的文档,我正在使用个人资料范围 - https://www.googleapis.com/auth/user.phonenumbers.readPersonFields=phoneNumbers 仅在其 Google 个人资料中读取经过身份验证的用户的电话号码(联系人列表中没有)。我正在使用 API 密钥和 oAuth accesstoken 来授权请求​​。 google people API 不会单独获取与上述范围内的个人资料关联的电话号码。除了上述范围(即 www.googleapis.com/auth/contacts.readonly)之外,添加整个 联系人列表读取权限 的范围会返回来自配置文件正确。有没有办法从他/她的个人资料中获取用户的电话号码仅使用 user.phonenumbers.read 范围?

【问题讨论】:

参考这个:***.com/a/45041579/6630837 user.phonenumbers.read 应该返回容器类型为 PROFILE 的电话号码,而不需要联系人范围。需要检查的一些事项: 1) 你是如何提出请求的?它是对人员资源名称的获取请求吗? 2)您确定添加联系人范围后显示的电话号码是容器类型PROFILE吗? @AmosYuen 你是对的。它返回容器类型 PROFILE 而不需要联系人范围,但仅在“Google Plus 个人资料”中添加联系人详细信息后才返回。早些时候,它与 CONTACT 容器一起返回,该容器实际上是我自己保存为联系人的电话号码。谢谢你的帮助! 【参考方案1】:

我可以找出问题所在。对于 'user.phonenumbers.read' 范围,人员 API 的文档说明 - '您的应用被授予读取其 Google 个人资料 中经过身份验证的用户电话号码的权限。

但“Google 个人资料”表示 Google Plus Profile 与他们的核心 Google 个人资料 -My Account完全不同。 People API 仅从 Google Plus 个人资料中获取信息。

因此,即使用户在我的帐户中添加了他/她的详细联系信息,People API 也不会获取他们的电话号码,除非他们手动将电话号码添加到他们的 Google Plus 个人资料中。添加联系方式后,我可以使用 'auth/user.phonenumbers.read' 获取联系方式,而无需添加 'auth/contacts.readonly' 范围。

【讨论】:

如何在php中获取客户端电话号码?

以上是关于无法使用 - auth/user.phonenumbers.read 范围从用户的谷歌个人资料中读取电话号码的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

LINUX下的mail\mailx为啥无法使用外部SMTP发邮件