Offlineimap XOAUTH2: xoauth2handler got: {u'error_description': u'Bad Request', u'error': u'invalid_grant'}

Viewed 307

For someone who prefer vision:

enter image description here

For someone who prefer text:

OfflineIMAP 7.1.5
  Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
imaplib2 v2.57 (system), Python v2.7.17, OpenSSL 1.1.1  11 Sep 2018
Account sync Gmail:
 *** Processing account Gmail
 Establishing connection to imap.gmail.com:993 (Remote)
 XOAUTH2 authentication failed: xoauth2handler got: {u'error_description': u'Bad Request', u'error': u'invalid_grant'}
 ERROR: All authentication types failed:
        XOAUTH2: xoauth2handler got: {u'error_description': u'Bad Request', u'error': u'invalid_grant'}
 *** Finished account 'Gmail' in 0:01
ERROR: Exceptions occurred during the run!
ERROR: All authentication types failed:
        XOAUTH2: xoauth2handler got: {u'error_description': u'Bad Request', u'error': u'invalid_grant'}

Traceback:
  File "/usr/share/offlineimap/offlineimap/accounts.py", line 283, in syncrunner
    self.__sync()
  File "/usr/share/offlineimap/offlineimap/accounts.py", line 359, in __sync
    remoterepos.getfolders()
  File "/usr/share/offlineimap/offlineimap/repository/IMAP.py", line 452, in getfolders
    imapobj = self.imapserver.acquireconnection()
  File "/usr/share/offlineimap/offlineimap/imapserver.py", line 558, in acquireconnection
    self.__authn_helper(imapobj)
  File "/usr/share/offlineimap/offlineimap/imapserver.py", line 431, in __authn_helper
    "failed:\n\t%s"% msg, OfflineImapError.ERROR.REPO)

Here is my .offlineimaprc

[general]
accounts = Gmail

[Account Gmail]
localrepository = Local
remoterepository = Remote
synclabels = yes
labelsheader = X-Keywords

[Repository Local]
type = GmailMaildir
localfolders = ~/emails
nametrans = lambda f: '[Gmail]/' + f if f in ['Drafts', 'Starred', 'Important', 'Spam', 'Trash', 'All Mail', 'Sent Mail$
[Repository Remote]
type= Gmail
auth_mechanisms = XOAUTH2
oauth2_client_id = xxxxxx.apps.googleusercontent.com
oauth2_client_secret = xxxxxxxxx
oauth2_request_url = https://accounts.google.com/o/oauth2/token
oauth2_refresh_token = xxxxxx
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
nametrans = lambda f: f.replace('[Gmail]/', '') if f.startswith('[Gmail]/') else f
1 Answers

I've run into the same issue recently - adding remoteuser = myself@gmail.com to the config (same as when not relying on OAuth) helped

Related