0

我在澳大利亚的家用电脑上有一个 Web 服务器,我每天晚上都会在午夜上传一部电影到 youtube。它工作正常,没有问题。

我正在将我的 Web 服务器移到洛杉矶的托管 sshVM 服务器上,我从这个位置运行了相同的脚本,它给出了以下错误:

正在验证客户端... PHP 致命错误:未捕获异常 'Zend_Gdata_App_AuthException' 并带有消息 'Google 身份验证失败。原因:/usr/lib/php/include/ZendGdata-1.12.3/library/Zend/Gdata/ClientLogin.php:175 中的 BadAuthentication' 堆栈跟踪:

0 /var/www/localhost/htdocs/scripts/youtube-upload2.php(34): Zend_Gdata_ClientLogin::getHttpClient('email address', 'my.password', 'youtube', NULL, 'MySource', NULL, NULL , ' https://www.goo ...')

1 {主要}

在第 175 行的 /usr/lib/php/include/ZendGdata-1.12.3/library/Zend/Gdata/ClientLogin.php 中抛出

我在 youtube 屏幕上收到一条消息,说登录被阻止。

我如何告诉系统它可以允许从其他位置登录?

干杯

4

1 回答 1

0

我认为这可能会帮助你

http://apiblog.youtube.com/2011/03/clientlogin-fail.html

客户登录#FAIL

YouTube API 支持多种身份验证方案——AuthSub、OAuth 1 和 2 以及 ClientLogin——但在许多方面问题最大的是最后一种方法 ClientLogin。这篇博文将介绍 ClientLogin 尝试可能失败的一些方式,并在可能的情况下提供解决这些故障的方法。

不过,在我们开始讨论之前,有一点公共服务声明:考虑到使用 ClientLogin 时可能出现的所有问题,请考虑使用 YouTube API 支持的替代身份验证方法之一!AuthSub 尤其是 OAuth 2 很容易实现,并且不会受到我们将在 ClientLogin 中介绍的问题的影响。即使您正在编写一个供个人使用的小脚本,获取一个长期存在的 AuthSub 或 OAuth 2 令牌并将其重新用于身份验证也比硬编码 ClientLogin 的登录名和密码更可取。仅仅因为您的代码无法访问 Web 浏览器并不意味着 ClientLogin 是您唯一的选择——本指南涵盖了在这种情况下使用 OAuth 2 的技术。

有了这个,让我们调查一些失败!

场景 1:具有未链接 YouTube 帐户的用户尝试 ClientLogin。目前这种情况实际上不会导致失败,但在不久的将来会失败。正如最近在 YouTube 主博客上宣布的那样,所有 YouTube 帐户都必须链接到 Google 帐户,否则登录将开始失败——目前的计划是在 4 月底之前禁用未链接帐户的登录。唯一的解决方法是让您的用户将他们的 YouTube 帐户链接到 Google 帐户。如果他们从 Web 浏览器登录,无论是在 www.youtube.com 还是使用 AuthSub/OAuth,他们将完成关联帐户的步骤。请务必注意,虽然我们需要关联帐户,但我们将继续接受 YouTube 用户名或 Google 帐户电子邮件地址作为 ClientLogin 请求中的电子邮件参数。

场景二:已启用 OpenID 联合登录的用户尝试 ClientLogin。使用 OpenID 的联合登录是一种验证与特定电子邮件提供商(目前为 Yahoo! 和 AOL)上的电子邮件地址对应的 Google 帐户的新方法。它目前是在选择加入的基础上提供的,所以目前,仅仅因为某人的 Google 帐户与@yahoo.com 或@aol.com 地址相关联并不意味着他们正在使用联合登录。对于选择加入的用户,ClientLogin 将不再起作用。使用联合登录,所有登录请求都需要由身份提供者处理,并且 Google 的 ClientLogin 服务器无法代表用户将凭据中继到第三方服务器。因为 AuthSub 和 OAuth 的两个版本都是基于网络的,用户可以直接登录身份提供者的网站,然后将其重定向回 Google 的服务器,以发出适当的 AuthSub 或 OAuth 令牌。从 ClientLogin 迁移到 AuthSub 或 OAuth 是提供适用于 OpenID 帐户的身份验证的唯一方法。

场景 3:启用了两步验证的用户尝试 ClientLogin。这种情况,以及它导致失败的原因,在之前的博客文章中有详细介绍。重要的一点是,启用两步验证的用户需要为每个需要 ClientLogin 的应用程序生成应用程序专用密码,并提供该密码而不是他们的正常 Google 帐户密码。或者,使用 AuthSub 或 OAuth 允许您的用户直接使用他们的两因素凭据登录,从而获得更好的用户体验。

场景 4:用户在尝试 ClientLogin 时遇到验证码。这不是一个新的失败场景,但是没有正确处理它的开发人员经常忽略它。ClientLogin 文档包含有关您的应用程序应如何处理来自 ClientLogin 尝试的 CAPTCHA 响应的建议。如果您使用的是 AuthSub 或 OAuth,您的应用程序无需担心处理 CAPTCHA 的逻辑——它由标准的 AuthSub 和 OAuth 登录过程为您处理。

这似乎是一个详尽的失败场景列表,但随着我们继续迭代 YouTube 和 Google 帐户的登录体验,未来可能会出现更多“陷阱”。我们将尽最大努力让我们的开发者社区了解最新情况,但让您的应用程序永不过时的最佳方法是停止使用 ClientLogin!

于 2013-10-11T08:40:55.807 回答