В настоящее время мы получаем токены доступа / обновления с помощью MS Live API (https://login.live.com/oauth20_token.srf). Затем мы аутентифицируемся на imap-mail.outlook.com, используя этот токен доступа:
auth_string = 'user=%s\1auth=Bearer %s\1\1' % (email, access_token)
imap_conn = imaplib.IMAP4_SSL('imap-mail.outlook.com')
imap_conn.debug = 4
imap_conn.authenticate('XOAUTH2', lambda x: auth_string)
imap_conn.select('INBOX')
print(imap_conn.list())
Все работает нормально.
К сожалению, MS Live API устареет в ближайшее время: https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/migrating-from-live-sdk?view=odsp-graph-online
Поэтому мы пытаемся использовать токены MS Graph API. Мы получаем токены:
{ 'access_token': '****',
'scope': 'User.Read Mail.Send Mail.ReadWrite',
'refresh_token': '***',
'token_type': 'Bearer',
'ext_expires_in': 0,
'expires_in': 3600
}
Но когдамы используем этот токен, мы всегда получаем:
46:15.27 > b'JEKB1 AUTHENTICATE XOAUTH2'
46:15.57 < b'+ '
46:15.57 write literal size 1584
46:21.21 < b'JEKB1 NO AUTHENTICATE failed.'
46:21.21 NO response: b'AUTHENTICATE failed.'
Итак, вопросы: 1. Можно ли подключиться к imap-mail.outlook.com с помощью токенов MS Graph API? 2. Если нет, какэто будет работать, когда MS Live API больше не будет доступен?