Интегрируйте API Gmail в приложение Android KotlinAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Интегрируйте API Gmail в приложение Android Kotlin

Сообщение Anonymous »

Я пытался реализовать функцию отправки электронной почты с помощью Gmail API в приложении Kotlin Android. Мне удалось реализовать вход в Google одним касанием. Я получаю токен от функции onActivityResult(). Я хочу использовать этот токен для доступа к Gmail API и отправки электронного письма.
Это мой исходный код, который я использовал для реализации Вход в Google одним нажатием. Я хочу реализовать функцию отправки электронной почты с помощью Gmail API. Можете ли вы помочь мне с этой проблемой?
val SERVER_CLIENT_ID ="#######################.apps.googleusercontent.com"
private lateinit var oneTapClient: SignInClient
private lateinit var signInRequest: BeginSignInRequest
val REQ_ONE_TAP = 100

@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}

// get reference to button
var authBtn = findViewById(R.id.sign_in_button) as Button
authBtn.setOnClickListener(){
oneTapClient = Identity.getSignInClient(this)
signInRequest = BeginSignInRequest.builder()
.setPasswordRequestOptions(BeginSignInRequest.PasswordRequestOptions.builder()
.setSupported(true)
.build())
.setGoogleIdTokenRequestOptions(
BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
.setSupported(true)
// Your server's client ID, not your Android client ID.
.setServerClientId(SERVER_CLIENT_ID)
// Only show accounts previously used to sign in.
.setFilterByAuthorizedAccounts(false)
.build())
// Automatically sign in when exactly one credential is retrieved.
.setAutoSelectEnabled(true)
.build()

oneTapClient.beginSignIn(signInRequest)
.addOnSuccessListener(this) { result ->
try {

startIntentSenderForResult(
result.pendingIntent.intentSender, REQ_ONE_TAP,
null, 0, 0, 0, null)
} catch (e: IntentSender.SendIntentException) {
Log.e(TAG, "Couldn't start One Tap UI: ${e.localizedMessage}")
}
}
.addOnFailureListener(this) { e ->
// No saved credentials found. Launch the One Tap sign-up flow, or
// do nothing and continue presenting the signed-out UI.
Log.d(TAG, e.localizedMessage)
}
}

}

@RequiresApi(Build.VERSION_CODES.O)
private fun generateSecureNonce(length: Int = 32): String? {
val random = SecureRandom()
val nonceBytes = ByteArray(length)
random.nextBytes(nonceBytes)
return Base64.getUrlEncoder().withoutPadding().encodeToString(nonceBytes)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
val tv = findViewById(R.id.textView) as TextView
super.onActivityResult(requestCode, resultCode, data)

when (requestCode) {
REQ_ONE_TAP -> {
try {
val credential = oneTapClient.getSignInCredentialFromIntent(data)
val idToken = credential.googleIdToken
val username = credential.id
val password = credential.password
when {
idToken != null -> {
// Got an ID token from Google. Use it to authenticate
// with your backend.
Log.d(TAG, "Got ID token.")
tv.setText(idToken.toString())
}
password != null -> {
// Got a saved username and password. Use them to authenticate
// with your backend.
Log.d(TAG, "Got password.")
}
else -> {
// Shouldn't happen.
Log.d(TAG, "No ID token or password!")
tv.setText("No ID or Password")
}
}
} catch (e: ApiException) {
tv.setText(e.toString())
Log.d(TAG, e.toString())
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... kotlin-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»