将 OAuth 2.0 用于 Web 服务器应用程序流时无法选择正确的通道

Posted

技术标签:

【中文标题】将 OAuth 2.0 用于 Web 服务器应用程序流时无法选择正确的通道【英文标题】:Not being able to choose the right channel when using OAuth 2.0 for Web Server Applications flow 【发布时间】:2018-01-03 03:42:59 【问题描述】:

我的应用遵循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 流程没有太多控制权,所以我不确定如何解决这个问题。这对我来说是个问题,还是我只需要指示用户自己做点什么?

可能相关的事情:

YouTube APIs - Access mutiple youtube channels (Brand Accounts) using Google Admin account YouTube API v3 get all channels associated with a logged in user Youtube Brand Manager API V3 Support 内容所有者“伞”帐户https://support.google.com/youtube/answer/6301188 默认频道https://support.google.com/youtube/answer/6019090?hl=en https://youtube-eng.googleblog.com/2013/06/google-page-identities-and-youtube-api_24.html “主账号授权默认频道”https://issuetracker.google.com/issues/35177410

【问题讨论】:

【参考方案1】:

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

channels.list API 中有参数

ma​​nagedByMe布尔值

该参数只能在适当的情况下使用 授权请求。注意:此参数专门用于 YouTube 内容合作伙伴

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

onBehalfOfContentOwner 字符串

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

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

【讨论】:

感谢您的回答!可能是这种情况,但我不完全确定,因为有问题的帐户只能由一个人管理。一旦我弄清楚这是否是问题,我会回到这个问题。 @LeoLännenmäki 我知道这已经很长时间了,但我遇到了同样的问题。有没有运气弄清楚这是否是您的问题?

以上是关于将 OAuth 2.0 用于 Web 服务器应用程序流时无法选择正确的通道的主要内容,如果未能解决你的问题,请参考以下文章

用于微服务架构的OAuth 2.0流程

OAuth 2.0:在授权代码流程中,谁最终将访问令牌交给我的 Web 浏览器?

如何进行应用程序到应用程序(服务器到服务器)身份验证、OAuth 2.0、Web API 2.0

使用 Spring Security + WSO2 身份服务器的 OAuth 2.0

用于服务应用程序的 Google oAuth 2.0(JWT 令牌请求)

在 OAuth 2.0 安全 Web 应用程序上使用 JMeter 脚本进行性能测试