PHP / Google OAuth - 获取MAIN Gmail电子邮件而不是@ pages.plusgoogle电子邮件

时间:2017-04-14 09:29:07

标签: php oauth google-api google-oauth

当用户进入Google OAuth的身份验证页面时,有两个选项,选择一个帐户:

https://i.gyazo.com/e58272338236a472f1000b8aa1e426f6.png

或选择一个帐户,然后选择一个子帐户

https://i.gyazo.com/3e340c41a37f76c20541e1540c902035.png

我想获取main-gmail帐户的电子邮件地址email@gmail.com,而不是获取他们的子YouTube电子邮件地址,例如name-9999@pages.plusgoogle.com

我使用的范围是:

我有什么方法可以绕过这个,或者我可以在其他方面使用另一个范围来访问他们的主Gmail。

编辑:在查看了更多帖子后,发生了同样的问题:Google OAuth2 Login - Get YouTube nickname and real email address基于2013年的报价:

  

有趣的用例。不幸的是,此时只有一个令牌无法做到这一点。原因是youtube通道由系统中的不同对象(几乎像用户帐户)表示。 OAuth授权可以属于gmail用户或youtube频道。当我们在请求中看到youtube范围时,我们会显示用户ID列表以及用户可能拥有的任何渠道,并且审批用户会选择其中一个。结果令牌属于该对象/帐户。

     

我们正在构建与委托和渠道相关的新功能。例如   一种可能的解决方案可能是在用户帐户上获取单个令牌   这使您可以访问由其管理的所有通道上的API   帐户。对不起,目前没有ETA。

是否有人知道与此相关的进一步发展,因为这将解决问题

1 个答案:

答案 0 :(得分:1)

到目前为止,无法通过YouTube Data API v3 获取与YouTube频道相关联的Gmail地址。自the answer you quoted发出以来,没有任何改变。

正如@nvnagr所说,YouTube频道有点像一个独特的用户对象,因为Google帐户可以管理多个YT频道。否则,在发出请求时无法确定您指的是哪个频道。根据{{​​3}}判断,Google的OAuth系统似乎会自动引用“YouTube频道用户”。而不是真正的Google用户'只要您引用任何与YouTube API相关的范围。

可能但是可以使用referenced question。此API的Google+ API端点具有emails属性。

注意:超出这一点的一切只是猜测我通过阅读一些文档页面(意思是我不知道它是否有效)。不过,我认为它仍然可以帮助您找到解决方案。

使用OAuth 2.0进行正确身份验证后,您可以使用me userId来获取相应用户的个人资料表示。根据文档的不同部分,要么需要https://www.googleapis.com/auth/plus.me范围(如所述/people/{userId}),要么plus.profile.emails.read范围(说明here,但是这个范围不是当你用https://www.googleapis.com/auth/here))作为前缀时,似乎存在。

根据您的OAuth令牌具有的授权,您可以从该端点提取gmail地址,尽管这看起来需要稍微调整一下。