我的应用遵循服务器端授权流程,如https://developers.google.com/youtube/v3/guides/auth/server-side-web-apps中所述。我强迫prompt=select_account
。
在最基本的情况下,在“第3步:Google提示用户同意”中,用户会看到一个屏幕,其中包含一个或多个名为“选择帐户”的帐户。如果用户选择的帐户只有一个与之关联的通道,则流程会直接进入“步骤4:处理OAuth 2.0服务器响应”。
如果用户有多个与该帐户关联的渠道,则该用户可能会看到另一个标题为“选择您的帐户或品牌帐户”的屏幕。
就我个人而言,我有两个Google帐户:个人帐户和工作帐户,我在“选择帐户”屏幕上看到它们。如果我选择我的个人帐户,我会直接访问该应用程序。如果我选择了我的工作帐户,我会看到其他屏幕,我可以选择我的“个人”工作YouTube频道/帐户或公司范围的共享频道/帐户。总的来说,我可以管理和访问3个YouTube频道/帐户。
问题是某些用户看不到“选择您的帐户或品牌帐户”中列出的所有频道。如果用户同时登录YouTube,他们仍然可以通过YouTube上的右上角帐户选择器访问所有频道,但他们根本无法在选择器中看到这些频道。我尝试在这些情况下调用YT API channels.list
,但它不返回丢失的频道,只返回用户从选择器中选择的频道。
感觉我在这里遗漏了一些明显的东西,但由于我对OAuth流程没有多少控制权,我不确定如何解决这个问题。这对我来说是一个问题,还是我只需要指导用户在他们的最后做某事?
可能相关的事情:
答案 0 :(得分:1)
可能是未列出的帐户是用户不是所有者的帐户,只是管理员以及未设置标志 onBehalfOfContentOwner 的帐户。
在channels.list API中有参数
managedByMe 布尔
此参数只能在正确使用 授权请求。注意:此参数仅供参考 YouTube内容合作伙伴。
将此参数的值设置为true以指示API仅返回 内容所有者管理的频道 onBehalfOfContentOwner 参数指定。 必须将用户身份验证为CMS帐户 链接到指定的内容所有者和onBehalfOfContentOwner必须 提供。
和
onBehalfOfContentOwner string
此参数只能在经过适当授权的请求中使用。 注意:此参数仅适用于YouTube内容 伙伴。
onBehalfOfContentOwner参数指示请求的内容 授权凭据可识别正在的YouTube CMS用户 代表参数值中指定的内容所有者。这个 参数适用于拥有和管理的YouTube内容合作伙伴 许多不同的YouTube频道。 允许内容所有者 进行一次身份验证并访问其所有视频和频道数据, 无需为每个提供身份验证凭据 个人频道。用户通过身份验证的CMS帐户 必须与指定的YouTube内容所有者相关联。