gmail oauth imap zend получить из gmail вместо сессии - PullRequest
0 голосов
/ 05 апреля 2011

Я планирую использовать Google oauth IMAP, чтобы подписаться на мой сайт. Я использую Zend Framework для того же. http://code.google.com/p/google-mail-xoauth-tools/wiki/PhpSampleCode Также я собираюсь зарегистрироваться на 3-х ножках Когда я прохожу образец Threelegged.php. Я обнаружил, что у него есть входящий адрес электронной почты, и он хранит его в сеансе и получает доступ к учетной записи gmail, а когда он возвращается, он удаляет идентификатор электронной почты из сеанса

$ email_address = $ _SESSION ['email_address'];

Строка № 121

$ config = new Zend_Oauth_Config ();

$ config-> setOptions ($ опции);

$ config-> setToken ($ маркер доступа);

$ config-> setRequestMethod ( 'GET');

$ url = 'https://mail.google.com/mail/b/'. $ email_address. '/ IMAP /';

Мое требование: я не хочу, чтобы адрес электронной почты оставался в сеансе, вместо этого я хочу получить указанный адрес электронной почты в $ адрес электронной почты. Как я могу это сделать ? Поддерживает ли какая-либо функция в Zend Framework?

1 Ответ

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

http://sites.google.com/site/oauthgoog/Home/emaildisplayscope

Вам необходимо будет включить URL-адрес авторизации вместе с другими URL-адресами, с которых вы запрашиваете разрешение на получение данных: https://www.googleapis.com/auth/userinfo.email

Тогда, когда вы действительно получите авторизованный токен, вы можете сделать это так:

// Get access token from session after authorization process is complete.
$accessToken = unserialize($_SESSION['ACCESS_TOKEN']);

// Retrieve email address using Access Token
$erequest = $accessToken->getHttpClient($options);
$erequest->setUri('https://www.googleapis.com/userinfo/email');
$erequest->setMethod(Zend_Http_Client::GET);
$ereturn = $erequest->request();
parse_str($ereturn->getBody(), $earray);
$email_address = $earray['email'];

// Retrieve mail using Access Token
$config = new Zend_Oauth_Config();
$config->setOptions($options);
$config->setToken($accessToken);
$config->setRequestMethod('GET');
$url = 'https://mail.google.com/mail/b/' .
   $email_address . 
   '/imap/';

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

...