【问题标题】:Get Google Plus Images Using Zend Framework 1 Gdata使用 Zend Framework 1 Gdata 获取 Google Plus 图像
【发布时间】:2015-06-03 13:14:06
【问题描述】:

我已经为此寻找答案已经有一段时间了。我在这里查看了其他问题,但找不到与我的情况相关的问题。谷歌搜索问题也没有帮助。

基本上,我使用 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;
}

它在一台服务器上提供:

注意(8):未定义偏移量:1 [APP/vendors/Zend/Gdata/ClientLogin.php, line 150]

另一方面:

注意 (8):未定义的偏移量:1 [APP/vendors/Zend/Gdata/ClientLogin.php,第 150 行] 致命错误:在 /home/home/mysite/app/vendors/Zend/Gdata/App.php:717 中包含消息“预期响应代码 200,需要 403 授权”的未捕获异常“Zend_Gdata_App_HttpException”:717 堆栈跟踪:#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/mysi te/app/vendors/Zend/Gdata/App.php 在第 717 行

注意:我正在使用 CakePHP 1.3 和 Zend Framework 1.12.7。我只是想从 Google Plus 中检索某个帐户的图像。用户输入他们的电子邮件和密码,应用程序应该提取他们的图像。

我似乎找不到这个问题的答案。谷歌是否完全停止了 API?用法有什么不对吗?

提前致谢。

【问题讨论】:

  • 你需要切换到Oauth2。客户端登录已关闭。
  • @DalmTo 这不是那个问题的重复。我检查了它,它在很多方面都不相关。我正在使用 ZendFramework 1 Gdata 类使用Zend_Gdata_ClientLogin 进行连接以仅检索数据。另一个示例处理 .NET 并通过 API 动态插入图像。除了基本用法(身份验证方法、zf 版本、google 本身等)之外,可能导致问题的差异还有很多。
  • 我的意思是谷歌端的客户端登录端点已被关闭。您无法使用登录名和密码访问任何 Google API。您必须切换到开放式身份验证。

标签: php cakephp zend-framework google-plus gdata


【解决方案1】:

Zend_Gdata 使用 ClientLogin,它已于 2012 年 4 月 20 日弃用并于 2015 年 5 月 26 日关闭。此代码将不再有效,您需要切换到使用 Oauth2。

您可以使用当前的Google PHP client library 进行身份验证,然后使用在那里创建的访问令牌来访问它。 This answer may help

【讨论】:

  • 我猜它已经被关闭是真的。然而,您提供的链接实际上是针对 .NET 框架的,而不是针对 php 库的。请编辑它,以便我可以接受答案。
  • 太快了!感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多