使用Oauth的Zend Gdata和Gmail Feed Access

时间:2011-11-09 12:38:15

标签: zend-framework oauth gmail zend-gdata

在Zend Gdata模块中,有自己的文档和日历类,但对于Gmail没有。你知道任何有用的例子吗?

因为我无法自己获得gmail工作。我很容易从Oauth得到令牌,并且Zend确实提供了像Zend_Gdata_Docs那样完美无缺的库。

我只是证明我的观点:

$token = unserialize($this->user->google_token);
$httpClient = $token->getHttpClient($google_oauth_config);
$client = new Zend_Gdata_Docs($httpClient);
// Retrieve user's list of Google Docs
$feed = $client->getDocumentListFeed();

foreach( $feed->entries as $entry )
{
  $docs[] = $entry;
}

我得到像我应该的文档。

但是如何收到电子邮件?没有现成的客户端,所以我尝试强制请求到正确的端点:

$token = unserialize($this->user->google_token);
$httpClient = $token->getHttpClient($google_oauth_config);
$httpClient->setUri("https://mail.google.com/mail/feed/atom");
$response = $httpClient->request();

但直接访问它似乎打破了某些东西/或某些东西无法完成。谷歌告诉我401非常规访问。

为了更加缩小问题范围,我改变了我的工作文档代码,以便我手动设置URI,然后执行相同的直接请求()(我根本不使用那个Gdata_Docs类),它也会触发Google的错误结束。所以问题似乎在于直接请求。

如果有人可以提供任何有用的信息,我应该感激不尽!或者我是否需要创建新类,扩展Gdata并尝试这种方式?这就是我能想到的一切。

1 个答案:

答案 0 :(得分:0)

可能是你可以试试。

    $httpClient = $accessToken->getHttpClient($this->_oAuthOptions);
    ($httpClient instanceof Zend_Gdata_HttpClient);
    $httpClient->setUri("https://mail.google.com/mail/feed/atom/");
    $httpClient->setParameterGet('server', 'mail');
    $httpClient->setMethod('GET');
    $response = $httpClient->request();
    print_r($response);