しばらくOAUTHBEARER
認証にGMailを使用してきたが、解決できない問題に封じ込めました。mutt
実行すると、次のような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開発コンソールそしてclient_id
そしてclient_secret
。私のGoogle開発者アプリケーションを特に無視する必要があるという警告が表示されます。未確認明示的に許可する必要があります。過去には、これが問題になったことを覚えていません。次のコマンドを使用して正常にログインできます。
oauth2.py [email protected] --client_id=56843257498 --client_secret=fjdksla --generate_oauth2_token
これは私のものです.muttrc
:
set imap_oauth_refresh_command="~me/bin/oauth2.py \
--user [email protected] \
--client_id=60080XXX.apps.googleusercontent.com \
--client_secret=AZXXXX \
--refresh_token=1//XXXXAYSNwF"
set smtp_oauth_refresh_command="~me/bin/oauth2.py \
[email protected] \
--client_id=60080XXX.apps.googleusercontent.com \
--client_secret=AZXXXX \
--refresh_token=1//XXXXAYSNwF"
上記のコマンドはシェルで正しく実行されます。さらにテストも行われました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 [email protected] 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)
私はこれらすべてを仕事用メールに設定して作業していますが、個人用メールはそうではありません。私は単純なものを見逃しているような気がします。誰でも私の間違いを見るのを手伝うことができますか?
ベストアンサー1
私はこれを理解しています。 base64でエンコードされたjsonを無効なフォワーダトークンに渡すoauth2.py
のではなく、jsonレスポンスを印刷するように変更しました。このオプションを教えてくれた@jakub-jindraに感謝します。access_token
mutt
--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,[email protected],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'}
これが誰かに役立つことを願っています!