当用户被带到google oauth的身份验证页面时,有两个选项,选择一个帐户:
https://i.gyazo.com/e58272338236a472f1000b8aa1e426f6.png
或选择帐户,然后选择子帐户
https://i.gyazo.com/3e340c41a37f76c20541e1540c902035.png
我想得到主gmail帐户的电子邮件地址email@gmail.com,而不是他们的子youtube电子邮件地址,比如name-9999@pages.plusgoogle.com
我使用的范围是:
https://www.googleapis.com/auth/youtube
https://www.googleapis.com/auth/userinfo.email
有没有什么方法可以绕过这个,或者有没有其他的作用域,我可以使用这个以外的访问他们的主要Gmail。
编辑:在浏览了更多的帖子后,这里出现了同样的问题:Google OAuth2 Login - Get YouTube nickname and real email address基于2013年引用:
有趣的用例。不幸的是,现在没有办法用一个代币来做这件事。原因是youtube频道在系统中由不同的对象(几乎像用户帐户)表示。OAuth授权可以属于Gmail用户,也可以属于YouTube频道。当我们在请求中看到youtube作用域时,我们将显示用户id列表和用户可能拥有的任何频道,并且批准用户将选择其中一个频道。生成的令牌属于该对象/帐户。
我们正在建立与授权和渠道相关的新功能。例如
一种可能的解决方案是在用户帐户上获取单个令牌
它允许您访问由它管理的所有通道上的api
帐户。对不起,现在没有预计到达时间。
是否有人知道与此相关的进一步发展,因为这也会解决问题
最佳答案
到目前为止,还没有可能通过youtube数据api v3获得与youtube频道相关联的gmail地址。自从the answer you quoted被给予后,没有任何改变。
正如@nvnagr所说,youtube频道有点像一个与众不同的用户对象,因为一个google帐户可以管理多个yt频道。否则,在发出请求时无法判断您指的是哪个频道。根据referenced question判断,一旦你引用任何与youtube api相关的作用域,google的oauth系统似乎就会自动引用“youtube频道用户”而不是“真正的google用户”。
不过,也可以使用Google+ API。此api有一个/people/{userId}
端点,具有emails
属性。
注意:除此之外的一切都是我通过阅读一些文档页面所做的推测(这意味着我不知道它是否有效)。不过,我想,这也许还能帮你找到解决办法。
当使用oauth 2.0进行正确的身份验证时,可以使用me
foruserId
来获取相应用户的配置文件表示。根据文献的不同部分,要么要求https://www.googleapis.com/auth/plus.me
范围(如规定的AA>),要么要求plus.profile.emails.read
范围(AA>),但当你用https://www.googleapis.com/auth/
(here)前缀时,这似乎不存在。
根据oauth令牌的授权,您可能能够从该端点提取gmail地址,尽管这看起来需要稍加修改。