Google API Получить входящие электронные письма, используя access_token? - PullRequest
0 голосов
/ 11 февраля 2012

Я могу получить access_token для нескольких разрешений, таких как электронные письма, контакты, документы и т. Д., Используя oAuth 2.0. У меня есть access_token Я получил контакты, используя следующий код.

$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-  results='.$max_results.'&oauth_token='.$access_token;

$response_contacts=  curl_get_file_contents($url);

Теперь я хочу получать электронные письма пользователей, использующие этот access_token. я использовал этот URL но это дает 401 unauthorized Error

$url = 'https://mail.google.com/mail/feed/atom&oauth_token='.$access_token;
$response_emails=  curl_get_file_contents($url);

, пожалуйста, сообщите мне, как я могу получать электронные письма, используя access_token.

1 Ответ

2 голосов
/ 25 марта 2012

Я видел ссылки на фид Gmail, используя oauth_token в качестве параметра запроса.Однако, как только я использовал OAuth Playground , я обнаружил, что вам нужно передать свою информацию OAuth в виде заголовка Authorization, как вы увидите ниже.

<?php
$now = time();
$consumer = ...; // your own value here
$secret = ...; // your own value here
$nonce = ...; // same value you've been using
$algo = "sha1";
$sigmeth = "HMAC-SHA1";
$av = "1.0";
$scope = "https://mail.google.com/mail/feed/atom";
$path = $scope;
$auth = ...; // an object containing outputs of OAuthGetAccessToken

$args = "oauth_consumer_key=" . urlencode($consumer) .
  "&oauth_nonce=" . urlencode($nonce) .
  "&oauth_signature_method=" . urlencode($sigmeth) .
  "&oauth_timestamp=" . urlencode($now) .
  "&oauth_token=" . urlencode($auth->oauth_token) .
  "&oauth_version=" . urlencode($av);

$base = "GET&" . urlencode($path) . "&" . urlencode($args);

$sig = base64_encode(hash_hmac($algo, $base,
  "{$secret}&{$auth->oauth_token_secret}", true));

$url = $path . "?oauth_signature=" . urlencode($sig) . "&" . $args;

// Create a stream
$opts = array(
  "http" => array(
    "method" => "GET",
    "header" => "Authorization: OAuth " .
       "oauth_version=\"{$av}\", " .
       "oauth_nonce=\"{$nonce}\", " .
       "oauth_timestamp=\"{$now}\", " .
       "oauth_consumer_key=\"{$consumer}\", " .
       "oauth_token=\"{$auth->oauth_token}\", " .
       "oauth_signature_method=\"{$sigmeth}\", " .
       "oauth_signature=\"{$sig}\"\r\n"
  )
);

$context = stream_context_create($opts);

$out = file_get_contents($path, false, $context);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...