#zend-framework #oauth #gmail #imap
#zend-framework #oauth #gmail #imap
Вопрос:
Я планирую использовать Google oauth IMAP для регистрации на моем веб-сайте. Я использую zend framework для того же. http://code.google.com/p/google-mail-xoauth-tools/wiki/PhpSampleCode Также я подаю в суд на трехэтапный подход, чтобы зарегистрироваться, когда я просматриваю образец threelegged.php. Я обнаружил, что у меня есть адрес электронной почты inbox, и он сохраняет его в сеансе и переходит к доступу к учетной записи gmail, и как только он возвращается обратно, он удаляет идентификатор электронной почты из сеанса
$email_address = $_SESSION[’email_address’];
Строка № 121
$config = новый Zend_Oauth_Config();
$config->setOptions($options);
$config->setToken($accessToken);
$config->setRequestMethod(‘GET’);
$url = ‘https://mail.google.com/mail/b /’ . $email_address . ‘/imap/’;
Мое требование заключается в том, что я не хочу, чтобы адрес электронной почты сохранялся в сеансе, вместо этого я хочу, чтобы указанный адрес gmail был получен в $ email address. Как я могу это сделать? Поддерживает ли это какая-либо функция в Zend framework?
Ответ №1:
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/';
Это происходит после аутентификации токена для доступа к данным. Затем адрес электронной почты можно использовать для вашего почтового запроса или чего-либо еще, для чего требуется адрес электронной почты.