Я давно ищу ответ на этот вопрос. Я изучил другие вопросы здесь, но не смог найти подходящий для моей ситуации. Гуглить вопрос тоже не помог.
По сути, я использую класс 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;
}
На одном сервере это дает:
Примечание (8): неопределенное смещение: 1 [APP / vendors / Zend / Gdata / ClientLogin.php, строка 150]
А с другой:
Примечание (8): неопределенное смещение: 1 [APP / vendors / Zend / Gdata / ClientLogin.php, строка 150] Неустранимая ошибка: необработанное исключение «Zend_Gdata_App_HttpException» с сообщением «Ожидаемый код ответа 200, получено 403 авторизации» в /home/home/mysite/app/vendors/Zend/Gdata/App.php:717 Трассировка стека: # 0 / home / home / mysite / app / vendors / Zend / Gdata.php (221): Zend_Gdata_App-> executeHttpRequest (‘GET’, ‘https: // picasaw…’, Array, NULL, NULL, NULL) # 1 /home/home/mysite/app/vendors/Zend/Gdata/App.php(883): Zend_Gdata-> executeHttpRequest (‘ 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_ в /home/home/mysite/app/vendors/Zend/Gdata/App.php в строке 717
НОТА: Я использую CakePHP 1.3 вместе с Zend Framework 1.12.7. Я только пытаюсь получить изображения из Google Plus для определенного аккаунта. Пользователь вводит свой адрес электронной почты и пароль, и приложение должно извлечь их изображения.
Я не могу найти ответ на этот вопрос. Google полностью остановил API? Что-то в использовании неверно?
Заранее спасибо.
Zend_Gdata использует ClientLogin который устарел по состоянию на 20 апреля 2012 года и отключен 26 мая 2015 года. Этот код больше не будет работать, вам нужно переключиться на использование Oauth2.
Вы можете использовать текущий Клиентская библиотека Google PHP для аутентификации используйте созданный там токен доступа для доступа к нему. Этот ответ может помочь
Других решений пока нет …