Phi*_*eon 6 authentication gmail imap zend-framework gmail-imap
我正在尝试使用OA提供的使用Zend Imap类的PHP示例代码进入带有OAuth的IMAP服务器,但我无法进行身份验证.Zend给了我错误:
Zend_Mail_Storage_Exception [ Error ]: cannot select INBOX, is this a valid transport?
Run Code Online (Sandbox Code Playgroud)
令人讨厌的是,这是一个相当混乱的错误消息,基本上是"无效的凭据".我怎么知道的?通过调试发送到IMAP套接字的实际命令,我看到:
string(44) "NO Invalid credentials ey9if1544983wid.142
"
Run Code Online (Sandbox Code Playgroud)
我尝试使用telnet和Ruby gmail_xoauth gem,这表明它不是代码问题,而是其他问题.
看看这一切的最基本水平,我得到这样的命令:
TAG1 AUTHENTICATE XOAUTH R0VUIGh0dHBzOi8vbWFpbC5nb29nbGUuY29tL21h......etc
Run Code Online (Sandbox Code Playgroud)
这是我得到的地方NO Invalid credentials:
TAG2 SELECT "INBOX"
Run Code Online (Sandbox Code Playgroud)
这会回来BAD Unknown command并踢我.
我一直试图寻找有同样问题的人,但我发现只有问题,没有答案.有一些类似StackOverflow的问题:
一篇帖子显示有人在Python中遇到完全相同的问题.
这篇文章显示有人试图尴尬并用OAuth 2做,没有成功的报告.
还有就是建议"无效凭证"的错误可以通过将要解决的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 App帐户和一个简单的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 '<h1>Total messages: ' . $storage->countMessages() . "</h1>\n";
Run Code Online (Sandbox Code Playgroud)
对于那些有兴趣的人来说,这是设置连接的特定PHP代码,所有XOauth都由Google的PHP在同一个文件中处理,但我跳过它.
我遇到了完全相同的错误,并最终意识到我在请求 OAuth 权限时使用了错误的范围。
你需要有...
显然,您的 Gmail 帐户中还启用了 IMAP。现在看来一切都很好。