1

在 Zend Gdata 模块中,Docs 和 Calendar 有自己的类,但 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,然后执行相同的直接 request() (我根本不使用那个 Gdata_Docs 类),它也会在 Google 端引发错误。所以问题似乎出在那个直接的请求上。

如果有人可以提供任何有用的意见应该做什么,我将不胜感激!还是我需要创建新类,扩展 Gdata 并尝试这种方式?这就是我能想到的。

4

1 回答 1

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);
于 2011-11-25T09:09:59.663 回答