Доступ к Zend Gdata и Gmail через Oauth - PullRequest
1 голос
/ 09 ноября 2011

В модулях 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();

Но прямой доступ к нему, похоже, что-то сломал / или что-то не получилось. Google говорит мне, что 401 несанкционированный доступ.

Чтобы еще больше сузить проблему, я изменил свой рабочий код документа так, что я установил URI вручную, а затем выполнил тот же прямой запрос () (я вообще не использую этот класс Gdata_Docs), и он также выдает ошибку в Google конец. Таким образом, проблема, похоже, заключается в этом прямом запросе.

Если бы кто-нибудь мог получить полезную информацию о том, что следует сделать, я был бы более чем благодарен! Или мне нужно создать новый класс, расширяющий Gdata и попробовать его таким образом? Это все, что я могу придумать.

1 Ответ

0 голосов
/ 25 ноября 2011

может быть, вы можете попробовать.

    $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);
...