Youtube API客户端从不同位置登录


Youtube API client login from different location

我在澳大利亚的家用电脑上有一个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('mail address','my.password','youtube',NULL,'MySource',NULLhttps://www.goo...')

1{main}

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

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

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

干杯

i认为这可能会帮助您

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

客户端登录#失败

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

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

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

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

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

Scernario3:启用两步验证的用户尝试ClientLogin。这个场景,以及它将导致失败的原因,在之前的一篇博客文章中有详细的介绍。重要的一点是,启用两步验证的用户需要为每个需要ClientLogin的应用程序生成特定于应用程序的密码,并提供该密码,而不是他们的普通谷歌帐户密码。或者,使用AuthSub或OAuth可以让用户直接使用他们的双因素凭据登录,从而获得更好的用户体验。

场景4:用户在尝试ClientLogin时遇到CAPTCHA。这并不是一个新的失败场景,但它经常被那些没有正确处理它的开发人员忽视。ClientLogin文档包括关于应用程序应该如何处理ClientLogin尝试的CAPTCHA响应的建议。如果您使用的是AuthSub或OAuth,那么您的应用程序不需要担心处理CAPTCHA的逻辑问题——它由标准的AuthSub和OAuth登录过程负责。

这似乎是一个详尽的失败场景列表,但随着我们继续迭代YouTube和谷歌账户的登录体验,未来可能会出现更多的"陷阱"。我们将尽最大努力让我们的开发人员社区了解情况,但要让您的应用程序经得起未来考验,最好的方法是停止使用ClientLogin!