2013-08-23 44 views
0

我在澳大利亞的家用電腦上有一臺Web服務器,每天晚上我會在YouTube上傳一部電影到YouTube。它工作正常,沒有問題。Youtube API客戶端從不同位置登錄

我在我的移動Web服務器在洛杉磯託管sshVM服務器,我從這個位置運行相同的腳本,它給了以下錯誤:

身份驗證客戶端... PHP致命錯誤:未捕獲的異常'Zend_Gdata_App_AuthException'消息'Google身份驗證失敗。原因:BadAuthentication」在/usr/lib/php/include/ZendGdata-1.12.3/library/Zend/Gdata/ClientLogin.php:175 堆棧跟蹤:

0 /無功/網絡/本地主機/ htdocs中/腳本/youtube-upload2.php(34):Zend_Gdata_ClientLogin :: getHttpClient('email address','my.password','youtube',NULL,'MySource',NULL,NULL,'https://www.goo ...')

1 {主}

拋出/usr/lib/php/include/ZendGdata-1.12.3/library/Zend/Gdata/ClientLogin.php線175

我不得不YouTube屏幕上的消息說一個登錄被阻止。

如何告訴系統它可以允許從其他位置登錄?

乾杯

回答

0

我想這可能會幫助你

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

的ClientLogin #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帳戶。如果他們從網絡瀏覽器登錄,則可以訪問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均基於Web,因此用戶可直接在身份提供商的網站上登錄,並將其重定向回Google服務器以發佈相應的AuthSub或OAuth令牌。將ClientLogin遷移到AuthSub或OAuth是提供與OpenID帳戶配合使用的身份驗證的唯一方法。

Scernario 3:已啓用兩步驗證的用戶嘗試ClientLogin。 以前的博客文章詳細介紹了這種情況以及導致失敗的原因。重要的是,啓用了兩步驗證的用戶需要爲需要ClientLogin的每個應用程序生成特定於應用程序的密碼,並提供該密碼而不是其正常的Google帳戶密碼。或者,使用AuthSub或OAuth可讓用戶直接使用雙因素憑證登錄,從而帶來更好的用戶體驗。

場景4:用戶在嘗試ClientLogin時遇到驗證碼。 這不是一個新的故障情況,但它往往被開發人員忽略,如果處理不當的話。 ClientLogin文檔包含有關應用程序如何處理來自ClientLogin嘗試的CAPTCHA響應的建議。如果您使用的是AuthSub或OAuth,那麼您的應用程序無需擔心處理驗證碼的邏輯 - 它將由標準的AuthSub和OAuth登錄過程爲您處理。

這看起來像是一個詳盡的故障場景列表,但隨着我們繼續重複YouTube和Google帳戶的登錄體驗,未來可能會出現更多「陷阱」。我們會盡全力讓我們的開發人員社區瞭解情況,但要確保您的應用程序能夠面向未來的最佳方式是停止使用ClientLogin!

相關問題