Вы используете аккаунт Google Apps?
При перенаправлении на URL-адрес токена OAuthAuthorize я по ошибке указал hd = default. Это указывает конечной точке OAuth авторизовать токен для стандартной учетной записи Google, и она НЕ работает со Службами Google.
Итак, в файле Three-legged.php замените строку:
$consumer->redirect(array('hd' => 'default'));
с
$consumer->redirect();
И все должно быть в порядке - вас попросят выбрать между вашим потребителем и аккаунтом Служб Google, если вы вошли в систему обоими.
Надеюсь, это поможет ... Я исправлю код, чтобы решить эту проблему.
Ура,
-Ryan
#
Повторное использование SMTP - я еще не получил это полностью вместе, что хорошо документировано, но вот основы.
1) Создайте Zend / Mail / Protocol / Smtp / Auth / Xoauth.php, где метод auth () довольно прост:
// Ensure AUTH has not already been initiated.
parent::auth();
$this->_send('AUTH XOAUTH ' . $this->_xoauth_request);
$this->_expect(235);
$this->_auth = true;
2) Создайте $ initClientRequest немного по-другому, так как URL-адрес для SMTP меняется по сравнению с IMAP
3) Отправьте письмо следующим образом:
// where getXoauthClientRequest abstracts out line 116-165 in existing three-legged.php
$smtpInitClientRequestEncoded = getXoauthClientRequest($smtpUrl, $accessToken);
$config = array('ssl' => 'ssl',
'port' => '465',
'auth' => 'xoauth',
'xoauth_request' => $smtpInitClientRequestEncoded);
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail();
$mail->setBodyText('This is the text of the mail.');
$mail->setFrom($email_address, 'Some Sender');
$mail->addTo($email_address, 'Some Recipient');
$mail->setSubject('TestSubject');
$mail->send($transport);
Я попытаюсь создать что-то лучше документированное - для этого не нужно создавать классы в «пространстве имен» Zend, но, вероятно, для этого потребуется расширение Zend_Mail_Transport_Smtp из-за того, как _sendMail () записывается там для загрузки только аутентификационные классы из пакета Zend_Mail_Protocol_Smtp_Auth_ * 'package'