Open creatorplanet opened 2 years ago
class LoginActivity : AppCompatActivity() { //create a button variable lateinit var btnSignIn:com.google.android.gms.common.SignInButton private lateinit var auth: FirebaseAuth
lateinit var googleSignInClient: GoogleSignInClient
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
//themes: hide menuBar
supportActionBar?.hide()
auth = Firebase.auth
//assign the xml view to the button
btnSignIn= findViewById(R.id.btnSignIn)
// Configure Google Sign In
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build()
googleSignInClient = GoogleSignIn.getClient(this, gso)
//now set click listener for button
btnSignIn.setOnClickListener {
val signInIntent = googleSignInClient.signInIntent
resultLauncher.launch(signInIntent) //startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN)
}
}
//on activity result alternative
private var resultLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// There are no request codes
val data: Intent? = result.data
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
if (task.isSuccessful) {
try {
// Google Sign In was successful, authenticate with Firebase
val account = task.getResult(ApiException::class.java)!!
firebaseAuthWithGoogle(account.idToken!!)
} catch (e: ApiException) {
//Google Sign In failed, update UI appropriately
Toast.makeText(this, "Google Sign In failed", Toast.LENGTH_SHORT).show()
}
}
}
}
//
private fun firebaseAuthWithGoogle(idToken: String) {
val credential = GoogleAuthProvider.getCredential(idToken, null)
auth.signInWithCredential(credential)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
val user = auth.currentUser
//send user to main
gotomain()
} else {
// If sign in fails, display a message to the user.
Toast.makeText(this, "failed to sign in", Toast.LENGTH_SHORT).show()
}
}
}
fun gotomain()
{
val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
}
override fun onStart() {
super.onStart()
// Check if user is signed in (non-null) and update UI accordingly.
val currentUser = auth.currentUser
if (currentUser!=null)
{
//user exists so direct him to another activity
gotomain()
}
}
}
class MainActivity : AppCompatActivity() { private lateinit var auth: FirebaseAuth private lateinit var googleSignInClient: GoogleSignInClient
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Configure Google Sign In && Logout
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build()
googleSignInClient = GoogleSignIn.getClient(this, gso)
val btnLogout = findViewById<Button>(R.id.btnLogout)
btnLogout.setOnClickListener {
Firebase.auth.signOut()
googleSignInClient?.signOut()
val logoutIntent = Intent(this, LoginActivity::class.java) // move Login page
logoutIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK // 초기화 * 재로그인
startActivity(logoutIntent)
finish()
}
}
}
*
fun saveUserDataToDatabase(user : FirebaseUser?){
val email = user?.email
val uid = user?.uid
var userDTO = UserDTO()
userDTO.email = email
userDTO.emoji = "\uD83D\uDC3C \uD83C\uDF3F \uD83D\uDDA4 "
FirebaseFirestore.getInstance().collection("users").document(uid!!).set(userDTO)
//
finish()
startActivity(Intent(this, MainActivity::class.java))
}
*