使用OAuth 2.0 for Web Server Applications流时无法选择正确的频道

时间:2017-07-27 12:05:02

标签: youtube-api google-oauth youtube-data-api

我的应用遵循服务器端授权流程,如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流程没有多少控制权,我不确定如何解决这个问题。这对我来说是一个问题,还是我只需要指导用户在他们的最后做某事?

可能相关的事情:

1 个答案:

答案 0 :(得分:1)

可能是未列出的帐户是用户不是所有者的帐户,只是管理员以及未设置标志 onBehalfOfContentOwner 的帐户。

channels.list API中有参数

  

managedByMe 布尔

     

此参数只能在正确使用   授权请求。注意:此参数仅供参考   YouTube内容合作伙伴

     

将此参数的值设置为true以指示API仅返回   内容所有者管理的频道 onBehalfOfContentOwner   参数指定。 必须将用户身份验证为CMS帐户   链接到指定的内容所有者和onBehalfOfContentOwner必须   提供。

  

onBehalfOfContentOwner string

     

此参数只能在经过适当授权的请求中使用。   注意:此参数仅适用于YouTube内容   伙伴。

     

onBehalfOfContentOwner参数指示请求的内容   授权凭据可识别正在的YouTube CMS用户   代表参数值中指定的内容所有者。这个   参数适用于拥有和管理的YouTube内容合作伙伴   许多不同的YouTube频道。 允许内容所有者   进行一次身份验证并访问其所有视频和频道数据,   无需为每个提供身份验证凭据   个人频道。用户通过身份验证的CMS帐户   必须与指定的YouTube内容所有者相关联。