Я использую API-клиент Google python для создания объекта SignedJwtAssertionCredentials с Service Account, который можно успешно использовать для олицетворения пользователя и доступа к некоторым API, таким как календарь, например:
credentials = SignedJwtAssertionCredentials(CLIENT_ID, PRIVATE_KEY, SCOPE)
http = httplib2.Http()
http = credentials.authorize(http)
service = build('calendar', 'v3', http = http)
...
Я ищу способ использовать эти учетные данные для подключения с использованием IMAP и XOAUTH2, что означает, что мне нужно создать строку XOAUTH2, например:
'user=<EMAIL_ADDR>\1auth=Bearer <ACCESS_TOKEN>\1\1'
При использовании обычного OAuth2 часть ACCESS_TOKEN
можно легко обновить и получить. Я пробовал:
credentials = SignedJwtAssertionCredentials(
CLIENT_ID, PRIVATE_KEY, "https://mail.google.com/",
prn = "[email protected]")
credentials.refresh(httplib2.Http())
И использовать credentials.access_token
в строке XOAUTH2, но это не работает.
Есть ли способ преобразовать SignedJwtAssertionCredentials в строку XOAUTH2?