Ruby で XOAUTH2 を使用して、IMAP 経由で Gmail のメールにアクセスしようとしています。
oauth2
gemで OAuth 2.0 を使用して認証することにより、アクセス トークン (およびリフレッシュ トークン) を正常に生成できました。gmail_xoauth
IMAP 経由で Gmail にアクセスするために使用します。そのため、Gmail XOAuth2 docsに従って、SASL の初期クライアント応答を生成する必要があります。
The SASL XOAUTH2 initial client response has the following format:
base64("user=" {User} "^Aauth=Bearer " {Access Token} "^A^A")
using the base64 encoding mechanism defined in RFC 4648.
^A represents a Control+A (\001).
文字列で「Control + A」をどのように表すかがわかりません。私は単に使用し^A
ますか?
key = Base64.encode64("user=#{email}^Aauth=Bearer #{access_token_obj.token}^A^A")
この python スクリプトでは\1
、代わりに^A
. 私も試し\001
ました。何を試しても、(irb で) 認証すると、次の結果が得られます。
>> imap = Net::IMAP.new('imap.gmail.com', 993, usessl=true, certs=nil, verify=false)
>> imap.authenticate('XOAUTH2', email, key)
OpenSSL::SSL::SSLError: SSL_write:: bad write retry
そのエラーはまったく無関係である可能性がありますが、私が試したオプションが正しいとは確信していません.