php - 来自不同位置的YouTube API客户端登录

标签 php youtube zend-gdata

我在澳大利亚的家用计算机上有一个Web服务器,每天晚上12点将电影上传到youtube。它工作正常,没有问题。

我将Web服务器移至LA中的托管sshVM服务器,并从该位置运行了相同的脚本,并且出现以下错误:

正在验证客户端...
PHP致命错误:带有消息“与Google身份验证失败”的未捕获异常'Zend_Gdata_App_AuthException'。原因://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('电子邮件地址','my.password','youtube',NULL,'MySource',NULL,NULL ,'https://www.goo ...')

1 {main}

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

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

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

干杯

最佳答案

我认为这可能对您有帮助

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

ClientLogin #FAIL

YouTube API支持多种身份验证方案(AuthSub,OAuth 1和2,以及ClientLogin),但是在很多方面,这是最后一种方法ClientLogin,这是最成问题的方法。这篇博客文章将介绍ClientLogin尝试失败的一些方法,并在可能时提供解决这些失败的方法。

不过,在此之前,我们先发布一些公共(public)服务声明:考虑到使用ClientLogin时可能出现的所有问题,请考虑使用YouTube API支持的另一种身份验证方法! AuthSub尤其是OAuth 2易于实现,并且不受ClientLogin涵盖的问题的影响。即使您正在编写一个供个人使用的小脚本,也要获取一个长期存在的AuthSub或OAuth 2 token 并将其重新用于身份验证,而不是硬编码ClientLogin的登录名和密码。而且,仅因为您的代码无法访问网络浏览器并不意味着ClientLogin是您唯一的选择-本指南介绍了在这种情况下使用OAuth 2的技术。

顺便说一句,让我们调查一些失败!

方案1:具有未链接的YouTube帐户的用户尝试进行ClientLogin。
到目前为止,这种情况实际上并不会导致失败,但在不久的将来会导致失败。正如最近在YouTube主博客上宣布的那样,所有YouTube帐户必须链接到Google帐户,否则登录将失败-当前计划是在4月底之前禁用未链接帐户的登录。唯一的解决方法是让您的用户将其YouTube帐户链接到Google帐户。如果他们是通过网络浏览器登录的,则可以通过以下链接帐户的步骤进行操作,该浏览器可以访问www.youtube.com或使用AuthSub / OAuth。请务必注意,当我们需要链接帐户时,我们将继续接受YouTube用户名或Google帐户电子邮件地址作为ClientLogin请求中的电子邮件参数。

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

场景3:启用了两步验证的用户尝试进行ClientLogin。
在较早的博客文章中详细介绍了这种情况以及导致失败的原因。重要的一点是,启用了两步验证的用户需要为每个需要ClientLogin的应用程序生成特定于应用程序的密码,并提供该密码而不是其常规Google帐户密码。另外,使用AuthSub或OAuth可使您的用户直接使用其两个因素的凭据登录,从而带来更好的用户体验。

方案4:用户尝试ClientLogin时遇到验证码。
这不是新的故障情况,但是如果处理不当,通常会被开发人员忽略。 ClientLogin文档包括有关您的应用程序应如何处理ClientLogin尝试的验证码响应的建议。如果您使用的是AuthSub或OAuth,则您的应用程序无需担心处理验证码的逻辑-标准的AuthSub和OAuth登录过程将为您提供帮助。

这似乎是故障情况的详尽列表,但是随着我们继续迭代YouTube和Google帐户的登录体验,将来可能会出现更多的“陷阱”。我们将尽一切努力使我们的开发人员社区了解最新信息,但是,使您的应用程序面向 future 的最佳方法是停止使用ClientLogin!

关于php - 来自不同位置的YouTube API客户端登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18401878/

相关文章:

php - 使用 Zend_GData 和 Google Contacts API 将联系人添加到群组

php - Zend_GData 电子表格 - grid-id 的无效查询参数值

php - 将 Outlook 日历集成到网站/其他

php - 我如何用 php short echo 标签评论一行?

php - 我想使用 php 在 css 中的每个元素中添加我的类名

php - 从 YouTube 视频中提取自动字幕

youtube - 为什么 YouTube api 搜索从不同的服务器返回不同的结果?

php - 对我的网络服务器的服务器配置有什么建议吗?

带倒计时的php循环

android - 视频可以在移动设备上自动播放吗