Skip to content

Yang auth #476

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
Jul 29, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
get UserID
  • Loading branch information
butterflyforever committed Jul 16, 2020
commit 2b1723cda22d417c5709f67739395f4511176fe5
Original file line number Diff line number Diff line change
@@ -1,16 +1,44 @@
package com.google.samples.quickstart.canonical

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.AttributeSet
import android.util.Log
import android.view.View
import android.widget.Button
import androidx.fragment.app.FragmentTransaction
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.common.SignInButton
import com.google.android.gms.common.api.ApiException
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.snackbar.Snackbar
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.GoogleAuthProvider

class MainActivity : AppCompatActivity() {
private lateinit var mGoogleSignInClient: GoogleSignInClient
private lateinit var auth: FirebaseAuth

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
private fun googleSignInInit() {
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build()

mGoogleSignInClient = GoogleSignIn.getClient(this, gso)
}

private fun signIn() {
auth = FirebaseAuth.getInstance()
val signInIntent = mGoogleSignInClient.signInIntent
startActivityForResult(signInIntent, RC_SIGN_IN)
}

private fun setupNavigationBar() {
val runFragment = RunFragment()
supportFragmentManager
.beginTransaction()
Expand Down Expand Up @@ -57,6 +85,78 @@ class MainActivity : AppCompatActivity() {
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

googleSignInInit()
setupNavigationBar()
}

override fun onStart() {
super.onStart()
val account = GoogleSignIn.getLastSignedInAccount(this)
if (account == null) {
setContentView(R.layout.login_in_page)

findViewById<SignInButton>(R.id.sign_in_button).setOnClickListener {
signIn()
}

}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)

// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
if (task.isSuccessful) {
try {
// Google Sign In was successful, authenticate with Firebase
val account = task.getResult(ApiException::class.java)!!
Log.d("MainActivity-Login", "firebaseAuthWithGoogle:" + account.id)
firebaseAuthWithGoogle(account.idToken!!)
setContentView(R.layout.activity_main)
setupNavigationBar()
} catch (e: ApiException) {
// Google Sign In failed, update UI appropriately
Log.w("MainActivity-Login", "Google sign in failed", e)
// ...
}
} else {
Log.w("MainActivity-Login", "Google sign in unsuccessful")
}

}
}

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
Log.d("firebaseAuthWithGoogle", "signInWithCredential:success")
val user = auth.currentUser
} else {
// If sign in fails, display a message to the user.
Log.w("firebaseAuthWithGoogle", "signInWithCredential:failure", task.exception)
// ...
}

// ...
}
}



companion object {
private const val RC_SIGN_IN = 0
}




}
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.google.samples.quickstart.canonical

import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.firebase.auth.FirebaseAuth

// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
Expand All @@ -21,6 +25,8 @@ class MeFragment : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
private lateinit var mAuth : FirebaseAuth
private lateinit var mGoogleSignInClient : GoogleSignInClient

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -34,9 +40,12 @@ class MeFragment : Fragment() {
// .requestIdToken(getString(R.string.default_web_client_id))
// .requestEmail()
// .build()

//
// mGoogleSignInClient = GoogleSignIn.getClient(this.context!!, gso)
// mAuth = FirebaseAuth.getInstance()
}


override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand All @@ -45,6 +54,16 @@ class MeFragment : Fragment() {
return inflater.inflate(R.layout.fragment_me, container, false)
}

override fun onStart() {
super.onStart()
val account = GoogleSignIn.getLastSignedInAccount(this.context)
account?.let {
Log.i("MeFragment", "No login")
} ?.run {
Log.i("MeFragment", "Already login")
}
}

companion object {
/**
* Use this factory method to create a new instance of
Expand Down
9 changes: 0 additions & 9 deletions android/canonical/app/src/main/res/layout/fragment_me.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,4 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
29 changes: 29 additions & 0 deletions android/canonical/app/src/main/res/layout/login_in_page.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MeFragment">

<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="This is Login Page"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>