IMAP «Недействительные учетные данные» через GMail XOAUTH

Я пытаюсь войти на IMAP-сервер с помощью OAuth, используя пример кода PHP , предоставленный Google, который использует класс Zend Imap, но у меня не получается для аутентификации. Zend выдает мне ошибку:

Zend_Mail_Storage_Exception [ Error ]: cannot select INBOX, is this a valid transport?

К сожалению, это довольно сбивающее с толку сообщение об ошибке, по сути, «Недействительные учетные данные». Как я это узнал? Отлаживая фактические команды, отправляемые в сокет IMAP, я вижу следующее:

string(44) "NO Invalid credentials ey9if1544983wid.142
"

Я пробовал использовать telnet и драгоценный камень Ruby gmail_xoauth , который предполагает, что это не проблема кода, а что-то еще.

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

TAG1 AUTHENTICATE XOAUTH R0VUIGh0dHBzOi8vbWFpbC5nb29nbGUuY29tL21h......etc

Здесь я получаю НЕТ Неверных учетных данных , затем:

TAG2 SELECT "INBOX"

Это возвращает ПЛОХО Неизвестная команда и выгоняет меня.

Я пытался найти людей, у которых возникла такая же проблема, но нахожу только вопросы и никаких ответов. Есть несколько похожих вопросов на StackOverflow:

В одном сообщении показано, что у кого-то такая же проблема в Python.

В этом сообщении показано, как кто-то пытается изобразить неловкость и делает это с помощью OAuth 2 без каких-либо сообщений об успехе.

В группе Google GMail есть ветка, в которой предлагается устранить ошибку «Недопустимые учетные данные», перейдя на https://accounts.google.com/DisplayUnlockCaptcha для учетных записей GMail и https://www.google.com/a/[YOURDOMAIN.COM ]/UnlockCaptcha, если вы используете Google Apps, но последний только что сказал, что мое имя пользователя и пароль были неправильными, хотя это явно не так. Использование этого https://accounts.google.com/DisplayUnlockCaptcha работало нормально - хотя моя учетная запись является размещенным приложением, а не простым старым GMail - однако я все равно получаю те же ошибки при попытке снова войти в систему с помощью пример кода PHP, предоставленный Google.

Я пробовал использовать различные учетные записи приложений Google и обычную учетную запись GMail. Я пробовал переключить сервер IMAP с imap.gmail.com на imap.googlemail.com, ничего не меняет.

      /**
       * Make the IMAP connection and send the auth request
       */
      $imap = new Zend_Mail_Protocol_Imap('imap.googlemail.com', '993', true);
      $authenticateParams = array('XOAUTH', $initClientRequestEncoded);
      $imap->requestAndResponse('AUTHENTICATE', $authenticateParams);

      /**
       * Print the INBOX message count and the subject of all messages
       * in the INBOX
       */
      $storage = new Zend_Mail_Storage_Imap($imap);

      echo '

Total messages: ' . $storage->countMessages() . "

\n";

Для тех, кому интересно, это конкретный код PHP, который устанавливает соединение, весь XOauth обрабатывается PHP от Google в том же файле, но я его пропустил.

6
задан Community 23 May 2017 в 10:29
поделиться