2015-06-03 4 views
0

Я искал для этого ответ на некоторое время. Я рассмотрел другие вопросы здесь, но не смог найти подходящего для моей ситуации. Проблема с поиском не была полезной.Получить изображения Google Plus с использованием Zend Framework 1 Gdata

В принципе, я использую класс Gdata ZF1 для доступа к фотографиям api. Это работало несколько недель назад, но перестало работать (я не уверен, произошло ли изменение кода, или Google полностью остановил 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 для определенной учетной записи. Пользователь вводит свой адрес электронной почты и пароль, и приложение должно извлекать их изображения.

Кажется, я не могу найти ответ на этот вопрос. Google полностью остановил API? Что-то в использовании неверно?

Заранее спасибо.

+0

Возможный дубликат [Вставить фотографию ERROR: Удаленный сервер вернул ошибку: (403) Запрещено] (http://stackoverflow.com/questions/30567126/insert-photo-error-the-remote-server-returned -an-error-403-forbidden) – DaImTo

+1

вам нужно переключиться на Oauth2. клиентский логин был закрыт. – DaImTo

+0

@DalmTo это не дубликат этого вопроса. Я проверил его, и это не актуально во многих аспектах. Я использую класс ZendFramework 1 Gdata для подключения с помощью 'Zend_Gdata_ClientLogin' для извлечения данных. Другой пример касается .NET и динамического вставки изображений через API. Есть так много различий, которые могут вызвать проблему, отличную от базового использования (метод проверки подлинности, версия zf, сама Google и т. Д.). – Adon

ответ

5

Zend_Gdata использует ClientLogin, который устарел с 20 апреля 2012 года и отключен 26 мая 2015 года. Этот код больше не будет работать, вам нужно переключиться на использование Oauth2.

Вы можете использовать текущий Google PHP client library для аутентификации, а затем использовать токен доступа, созданный там для доступа к нему. This answer may help

+0

Я думаю, это правда, что он отключен. Однако ссылка, которую вы предоставили, на самом деле предназначена для платформы .NET, а не для библиотеки php. Пожалуйста, отредактируйте это, чтобы я мог принять ответ. – Adon

+0

Охватил неправильную ссылку, я ее исправил. – DaImTo

+1

Это было быстро! Спасибо за помощь. – Adon

Смежные вопросы