Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. package id.seedgrow.notes
  2.  
  3. import android.content.Intent
  4. import androidx.appcompat.app.AppCompatActivity
  5. import android.os.Bundle
  6. import android.widget.Toast
  7. import com.google.android.gms.auth.api.signin.GoogleSignIn
  8. import com.google.android.gms.auth.api.signin.GoogleSignInAccount
  9. import com.google.android.gms.auth.api.signin.GoogleSignInClient
  10. import com.google.android.gms.auth.api.signin.GoogleSignInOptions
  11. import com.google.android.gms.common.api.ApiException
  12. import com.google.android.gms.tasks.Task
  13. import com.google.firebase.auth.FirebaseAuth
  14. import com.google.firebase.auth.GoogleAuthProvider
  15. import kotlinx.android.synthetic.main.activity_login.*
  16.  
  17. class LoginActivity : AppCompatActivity() {
  18. val RC_SIGN_IN: Int = 1
  19.  
  20. lateinit var mGoogleSignInClient: GoogleSignInClient
  21. lateinit var mGoogleSignInOptions: GoogleSignInOptions
  22.  
  23. private lateinit var firebaseAuth: FirebaseAuth
  24.  
  25. override fun onCreate(savedInstanceState: Bundle?) {
  26. super.onCreate(savedInstanceState)
  27. setContentView(R.layout.activity_login)
  28.  
  29. configureGoogleSignIn()
  30. setupUI()
  31. firebaseAuth = FirebaseAuth.getInstance()
  32.  
  33. }
  34.  
  35. private fun setupUI() {
  36. btn_signin.setOnClickListener {
  37. signIn()
  38. }
  39. }
  40.  
  41. private fun signIn() {
  42. val signInIntent: Intent = mGoogleSignInClient.signInIntent
  43. startActivityForResult(signInIntent, RC_SIGN_IN)
  44. }
  45.  
  46. private fun configureGoogleSignIn() {
  47. mGoogleSignInOptions = GoogleSignInOptions
  48. .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  49. .requestIdToken(getString(R.string.default_web_client_id))
  50. .requestEmail()
  51. .build()
  52. mGoogleSignInClient = GoogleSignIn.getClient(this, mGoogleSignInOptions)
  53.  
  54. }
  55.  
  56. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  57. super.onActivityResult(requestCode, resultCode, data)
  58. val task: Task<GoogleSignInAccount> = GoogleSignIn.
  59. getSignedInAccountFromIntent(data)
  60. try {
  61. val account = task.getResult(ApiException::class.java)
  62. if(account != null){
  63. firebaseAuthWithGoogle(account)
  64. }
  65. }catch (e: ApiException){
  66. Toast.makeText(applicationContext, "Sign in Failed", Toast.LENGTH_LONG).show()
  67. }
  68. }
  69.  
  70. private fun firebaseAuthWithGoogle(account: GoogleSignInAccount) {
  71. val credential = GoogleAuthProvider
  72. .getCredential(account.idToken, null)
  73. firebaseAuth.signInWithCredential(credential)
  74. .addOnCompleteListener {
  75. if (it.isSuccessful){
  76. val intent = Intent(this, MainActivity::class.java)
  77. startActivity(intent)
  78. }else {
  79. Toast.makeText(applicationContext, "Sign in Failed",
  80. Toast.LENGTH_LONG).show()
  81. }
  82. }
  83. }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement