Обновление: расширенная версия, если кому-то нужна (Средняя): https://shorturl.at/zKQR7
Сначала вам необходимо убедиться, что вы прошли аутентификацию с помощью Google. Вы можете сделать это с помощью Firebase Auth (перед использованием вам нужно будет посмотреть, как он настроен, есть хорошая документация):
val providers = arrayListOf(
AuthUI.IdpConfig.GoogleBuilder().build()
)
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RQ_FIREBASE_AUTH
)
После аутентификации вы можете использовать FirebaseAuth.getInstance().currentUser
.
Следующим шагом будет настройка службы Gmail:
val credential = GoogleAccountCredential.usingOAuth2(
applicationContext, listOf(GmailScopes.GMAIL_LABELS, GmailScopes.GMAIL_READONLY)
)
.setBackOff(ExponentialBackOff())
.setSelectedAccountName(FirebaseAuth.getInstance().currentUser?.email)
val service = Gmail.Builder(
NetHttpTransport(), AndroidJsonFactory.getDefaultInstance(), credential
)
.setApplicationName("YourAppName")
.build()
Обратите внимание, что вышеизложенное, конечно, не готово к работе.
Наконец, вот часть для чтения:
val messageRead = service.users().messages()?.get(FirebaseAuth.getInstance().currentUser?.email, message?.id)?.setFormat("raw")?.execute()
Таким образом, вы можете получить представление о теле вашего сообщения, как это messageRead?.snippet
Однако следует отметить две неочевидные вещи:
Вы должны ожидать и обрабатывать UserRecoverableAuthIOException
исключение. В этот момент пользователь должен явно разрешить вашему приложению выполнять определенные действия с сообщениями
Все эти execute
вызовы не обрабатываются в основном потоке.
Надеюсь, это поможет! (извините, у меня нет времени, чтобы написать подробные инструкции).