Я пытаюсь синхронизировать мои письма из gmail на локальный сервер с помощью OfflineImap v7.2.1. Я следовал этому руководству: Использование Offlineimap с Gmail IMAP API и все заработало!
Вот мой .offlineimaprc
файл:
[general]
accounts = ExampleCompany
[Account ExampleCompany]
localrepository = ExampleCompanyLocal
remoterepository = ExampleCompanyRemote
postsynchook = notmuch new
#newer versions don't need this
#status_backend = sqlite
[Repository ExampleCompanyRemote]
type = IMAP
remotehost = imap.gmail.com
remoteuser = my-username@gmail.com
ssl = yes
starttls = no
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
### You'll need to configure the gmail API stuff here:
auth_mechanisms = XOAUTH2
oauth2_client_id = XXXX7-eXXXX.apps.googleusercontent.com
oauth2_client_secret = 9XXXXXP
oauth2_request_url = https://accounts.google.com/o/oauth2/token
#oauth2_refresh_token = 1/ZXXXXXw
oauth2_access_token = ya29.XXXXXIHbcS
## remove Gmail prefix on IMAP folders
nametrans = lambda f: f.replace('[Gmail]/', '') if
f.startswith('[Gmail]/') else f
[Repository ExampleCompanyLocal]
type = Maildir
localfolders = ~/mail
restoreatime = no
# Do not sync this folder
folderfilter = lambda folder: folder not in ['2007-2011-inbox']
## Remove GMAIL prefix on Google-specific IMAP folders that are pulled down.
nametrans = lambda f: '[Gmail]/' + f if f in ['Drafts', 'Starred', 'Important', 'Spam', 'Trash', 'All Mail', 'Sent Mail'] else f
В настоящее время я генерирую свои Access Token
и Refresh Token
, используя этот скрипт Python от Google. Однако мне бы хотелось, чтобы эти токены генерировались из приложения ios, а затем отправлялись на сервер для начала синхронизации. Я использую AppAuth , чтобы сделать это, но OfflineImap всегда выдает ошибки при использовании этих учетных данных, полученных из приложения IOS. Ошибка
ERROR: All authentication types failed:
XOAUTH2: [AUTHENTICATIONFAILED] Invalid credentials (Failure)
Есть идеи, почему эти учетные данные будут недействительными? Я использую те же client_id
и client_secret
при запуске скрипта и приложения. Я думаю, что упускаю что-то очевидное.
Вот запрос авторизации приложения в swift:
// builds authentication request
let request = OIDAuthorizationRequest(configuration: configuration,
clientId: "XXXX7-eXXXX.apps.googleusercontent.com",
clientSecret: "9XXXXXP",
scopes: [OIDScopeEmail],
redirectURL: redirectURI,
responseType: OIDResponseTypeCode,
additionalParameters: nil)
Спасибо