Authentication
mutt 中的 OAUTHBEARER 身份驗證失敗
我已經使用
OAUTHBEARER
身份驗證mutt
與 GMail 一起使用了一段時間,但我遇到了一個我無法弄清楚的問題。當我啟動時,mutt
我得到OAUTHBEARER authentication failed
. 這裡是.muttdebug0
:[2020-08-27 10:38:59] TLSv1.3 connection using TLSv1.3 (TLS_AES_256_GCM_SHA384) [2020-08-27 10:39:00] Connected to imap.gmail.com:993 on fd=7 [2020-08-27 10:39:00] imap_cmd_step: grew buffer to 512 bytes [2020-08-27 10:39:00] 7< * OK Gimap ready for requests from XX.XX.XX.XX r65mb112981108pjg [2020-08-27 10:39:00] IMAP queue drained [2020-08-27 10:39:00] 7> a0000 CAPABILITY [2020-08-27 10:39:00] 7< * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH [2020-08-27 10:39:00] Handling CAPABILITY [2020-08-27 10:39:00] 7< a0000 OK Thats all she wrote! r65mb112981108pjg [2020-08-27 10:39:00] IMAP queue drained [2020-08-27 10:39:00] imap_authenticate: Trying method oauthbearer [2020-08-27 10:39:00] Authenticating (OAUTHBEARER)... [2020-08-27 10:39:00] 7> a0001 AUTHENTICATE OAUTHBEARER bixhPWN3YWxrYXRyb25AZ21haWwuXXXXX= [2020-08-27 10:39:01] 7< + eyJXXXXXXX29nbGUuY29tLyJ9 [2020-08-27 10:39:01] 7> [2020-08-27 10:39:01] OAUTHBEARER authentication failed.
我在Google Dev 控制台和一個
client_id
和client_secret
. 我收到一個警告,我必須特別忽略我的 Google Developer 應用程序未經驗證,我必須明確允許。我不記得這是過去的問題。我可以使用以下方式成功登錄:oauth2.py --user=myemail@gmail.com --client_id=56843257498 --client_secret=fjdksla --generate_oauth2_token
這是在我的
.muttrc
:set imap_oauth_refresh_command="~me/bin/oauth2.py \ --user myemail@gmail.com \ --client_id=60080XXX.apps.googleusercontent.com \ --client_secret=AZXXXX \ --refresh_token=1//XXXXAYSNwF" set smtp_oauth_refresh_command="~me/bin/oauth2.py \ --user=myemail@gmail.com \ --client_id=60080XXX.apps.googleusercontent.com \ --client_secret=AZXXXX \ --refresh_token=1//XXXXAYSNwF"
上述命令在 shell 中執行良好。此外,一個測試也
oauth2.py
成功了(雖然這個測試XOAUTH2
而不是OAUTHBEARER
)。10:30.51 > HNNF1 AUTHENTICATE XOAUTH2 10:30.54 < + 10:30.54 write literal size 280 10:31.24 < * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584 10:31.24 < HNNF1 OK myemail@gmail.com authenticated (Success) 10:31.24 > HNNF2 SELECT INBOX 10:31.50 < * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing) 10:31.50 < * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing \*)] Flags permitted. 10:31.50 < * OK [UIDVALIDITY 2] UIDs valid. 10:31.50 < * 1060 EXISTS 10:31.50 < * 0 RECENT 10:31.50 < * OK [UIDNEXT 51915] Predicted next UID. 10:31.50 < * OK [HIGHESTMODSEQ 5748372] 10:31.50 < HNNF2 OK [READ-WRITE] INBOX selected. (Success)
我已經為我的工作電子郵件設置並工作了這一切,但不是為我的個人電子郵件。我覺得我只是錯過了一些簡單的東西。誰能幫我看看我的錯誤?
我想通了。我的更改
oauth2.py
列印了 json 響應,而不僅僅是access_token
.mutt
將 base64 編碼的 json 作為不正確的不記名令牌傳遞。感謝@jakub-jindra 將我指向該--quiet
選項。我通過執行
mutt -d 5
顯示了它傳遞給 GMail 的 base64 編碼的有效負載來解決這個問題:[2020-08-28 10:00:54] Authenticating (OAUTHBEARER)... [2020-08-28 10:00:54] 7> a0001 AUTHENTICATE OAUTHBEARER XXXXXXXXXX$XXXXInfQEB [2020-08-28 10:00:55] 7< + XXXXXXXXXX [2020-08-28 10:00:55] 7> [2020-08-28 10:00:55] OAUTHBEARER authentication failed.
我用 base-64 解碼得到:
n,a=myemail@gmail.com,host=imap.gmail.comport=993auth=Bearer {u'access_token': u'ya29.a0XXXXXX', u'scope': u'https://mail.google.com/', u'expires_in': 3599, u'token_type': u'Bearer'}
希望這對某人有幫助!