2015-06-03 47 views
0

我一直在尋找答案這個相當長的一段時間。我已經研究過其他問題,但找不到與我的情況相關的問題。谷歌搜索這個問題也沒有幫助。獲取谷歌加圖片使用Zend Framework 1 GDATA

基本上,我使用ZF1的GData類來訪問照片的API。這是幾個星期前的工作,但停止工作(我不確定是否有代碼更改或谷歌完全停止API)。

我的代碼如下:

private function _loadZendLibraries() 
    { 
     set_include_path(APP.'vendors'); 
     require_once('Zend/Loader.php'); 

     $Zend_Loader = new Zend_Loader(); 
     $Zend_Loader->loadClass('Zend_Gdata'); 
     $Zend_Loader->loadClass('Zend_Gdata_ClientLogin'); 
     $Zend_Loader->loadClass('Zend_Gdata_AuthSub'); 
     $Zend_Loader->loadClass('Zend_Gdata_Photos'); 
     $Zend_Loader->loadClass('Zend_Gdata_Photos_UserQuery'); 
     $Zend_Loader->loadClass('Zend_Gdata_Photos_AlbumQuery'); 
     $Zend_Loader->loadClass('Zend_Gdata_Photos_PhotoQuery'); 
     $Zend_Loader->loadClass('Zend_Gdata_App_Extension_Category'); 

    } 


function checkGoogleImages(){ 
    $this->_loadZendLibraries(); 
    $service_name = Zend_Gdata_Photos::AUTH_SERVICE_NAME; 
     $user = '********@gmail.com'; 
     $pass = '********'; 

     try { 
      $this->client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service_name); 
     } catch (Zend_Gdata_App_Exception $e) { 
      $this->Session->setFlash("Error: " . $e->getMessage(). "<br /> You need go to Google+ => Settings => Applications and APPROVE the application to connect.", 'flash_failure'); 
      $this->Session->delete('GOOGLE_USER'); 
      $this->redirect($this->referer()); 
     } 

     print "<pre>"; 
     print_r($this->client); 
     exit; 
} 

在一臺服務器它給:

Notice (8): Undefined offset: 1 [APP/vendors/Zend/Gdata/ClientLogin.php, line 150]

而另一方面:

Notice (8): Undefined offset: 1 [APP/vendors/Zend/Gdata/ClientLogin.php, line 150] Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 403 Authorization required' in /home/home/mysite/app/vendors/Zend/Gdata/App.php:717 Stack trace: #0 /home/home/mysite/app/vendors/Zend/Gdata.php(221): Zend_Gdata_App->performHttpRequest('GET', ' https://picasaw ...', Array, NULL, NULL, NULL) #1 /home/home/mysite/app/vendors/Zend/Gdata/App.php(883): Zend_Gdata->performHttpRequest('GET', ' https://picasaw ...', Array) #2 /home/home/mysite/app/vendors/Zend/Gdata/App.php(771): Zend_Gdata_App->get(' https://picasaw ...', NULL) #3 /home/home/mysite/app/vendors/Zend/Gdata/App.php(213): Zend_Gdata_App->importUrl(' https://picasaw ...', 'Zend_Gdata_Phot...', NULL) #4 /home/home/mysite/app/vendors/Zend/Gdata.php(162): Zend_Gdata_App->getFeed(' https://picasaw ...', 'Zend_Gdata_Phot...') #5 /home/home/mysite/app/vendors/Zend/Gdata/Photos.php(175): Zend_Gdata->getFeed(' https://picasaw ...', 'Zend_Gdata_Phot...') #6 /home/home/mysite/app/controllers/photos_ in /home/home/mysite/app/vendors/Zend/Gdata/App.php on line 717

注:我使用CakePHP 1.3與Zend Framework 1.12.7一起。我只是試圖從Google Plus檢索某個帳戶的圖片。用戶輸入他們的電子郵件和密碼,應用程序應該提取他們的圖像。

我似乎無法找到這個問題的答案。谷歌是否完全停止API?用法中的某些內容是否有誤?

在此先感謝。

+0

可能重複[插入照片錯誤:遠程服務器返回錯誤:(403)禁止](http://stackoverflow.com/questions/30567126/insert-photo-error-the-remote-server-returned -an錯誤-403-禁止) – DaImTo

+1

你需要切換到OAuth2。客戶端登錄被關閉。 – DaImTo

+0

@達爾姆這不是重複的問題。我檢查過它,它在很多方面都不相關。我使用ZendFramework 1個GDATA類使用'Zend_Gdata_ClientLogin'只檢索數據連接。另一個例子處理.NET並通過API動態插入圖像。有很多區別可能會導致除基本用法(身份驗證方法,zf版本,谷歌本身等等)之外的問題 – Adon

回答

5

Zend_Gdata使用ClientLogin,它於2012年4月20日棄用,並於2015年5月26日關閉。此代碼不再需要切換到使用Oauth2。

您可以使用當前Google PHP client library進行身份驗證,然後使用在這裏創建的訪問令牌來訪問它。 This answer may help

+0

我想這是真的,它已被關閉。然而,你提供的鏈接實際上是爲.NET框架而不是php庫。請編輯,以便我可以接受答案。 – Adon

+0

哦,我抓住了錯誤的鏈接,我修好了。 – DaImTo

+1

太快了!謝謝您的幫助。 – Adon