Selaa lähdekoodia

feat: 移除一键登录,修改为选择账号登录

DoggyZhang 1 kuukausi sitten
vanhempi
sitoutus
5fd0344b90

+ 1 - 1
app/src/main/res/values/styles.xml

@@ -173,7 +173,7 @@
         <item name="ripple_circle_style">STROKE</item>
         <item name="ripple_circle_duration">1200</item>
         <item name="ripple_circle_count">2</item>
-        <item name="ripple_circle_stroke_width">1.68dp</item>
+        <item name="ripple_circle_stroke_width">1dp</item>
     </style>
 
     <style name="CommonSwitchButton">

+ 1 - 2
module/account/src/main/java/com/adealink/weparty/account/login/auth/AuthManager.kt

@@ -28,7 +28,7 @@ class AuthManager(private val authCallback: IAuthCallback?) {
 
     fun handleOnActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
         when (requestCode) {
-            REQ_GOOGLE_ONE_TAP, REQ_GOOGLE_SIGN_IN -> {
+            REQ_GOOGLE_SIGN_IN -> {
                 googleAuth?.onActivityResult(requestCode, resultCode, intent)
             }
 
@@ -54,7 +54,6 @@ class AuthManager(private val authCallback: IAuthCallback?) {
     }
 
     companion object {
-        const val REQ_GOOGLE_ONE_TAP = 1001
         const val REQ_GOOGLE_SIGN_IN = 1002
     }
 }

+ 2 - 163
module/account/src/main/java/com/adealink/weparty/account/login/auth/GoogleAuth.kt

@@ -2,19 +2,13 @@ package com.adealink.weparty.account.login.auth
 
 import android.app.Activity
 import android.content.Intent
-import android.content.IntentSender
-import androidx.core.app.ActivityCompat.startIntentSenderForResult
 import com.adealink.frame.log.Log
 import com.adealink.weparty.account.BuildConfig
 import com.adealink.weparty.account.constant.GOOGLE_CLIENT_ID
 import com.adealink.weparty.account.constant.GOOGLE_CLIENT_ID_DEBUG
 import com.adealink.weparty.account.constant.TAG_GOOGLE_AUTH
-import com.adealink.weparty.account.login.auth.AuthManager.Companion.REQ_GOOGLE_ONE_TAP
 import com.adealink.weparty.account.login.auth.AuthManager.Companion.REQ_GOOGLE_SIGN_IN
 import com.adealink.weparty.account.login.data.ThirdType
-import com.google.android.gms.auth.api.identity.BeginSignInRequest
-import com.google.android.gms.auth.api.identity.Identity
-import com.google.android.gms.auth.api.identity.SignInClient
 import com.google.android.gms.auth.api.signin.GoogleSignIn
 import com.google.android.gms.auth.api.signin.GoogleSignInAccount
 import com.google.android.gms.auth.api.signin.GoogleSignInClient
@@ -23,7 +17,6 @@ import com.google.android.gms.auth.api.signin.GoogleSignInStatusCodes
 import com.google.android.gms.common.ConnectionResult
 import com.google.android.gms.common.GoogleApiAvailability
 import com.google.android.gms.common.api.ApiException
-import com.google.android.gms.common.api.CommonStatusCodes
 import com.google.android.gms.tasks.Task
 import java.lang.ref.WeakReference
 
@@ -34,27 +27,14 @@ class GoogleAuth(
 
     companion object {
         private const val ERROR_CODE_SEND_INTENT_EXCEPTION = 10000
-        private const val ERROR_CODE_START_ONE_TAP_FAILED = 10001
         private const val ERROR_CODE_NO_ID_TOKEN = 10002
     }
 
     override var secret: String? = null
 
-    private var oneTapClient: SignInClient? = null
     private var googleSignInClient: GoogleSignInClient? = null
-
-    private var showOneTapUI = true
     val thirdType = ThirdType.GOOGLE
 
-    private fun getOneTapClient(activity: Activity): SignInClient {
-        if (oneTapClient != null) {
-            return oneTapClient!!
-        }
-
-        oneTapClient = Identity.getSignInClient(activity)
-        return oneTapClient!!
-    }
-
     private fun getServerClientId(): String {
         return when (BuildConfig.DEBUG) {
             true -> GOOGLE_CLIENT_ID_DEBUG
@@ -71,118 +51,7 @@ class GoogleAuth(
             return
         }
 
-        oneTapSignIn(activity, {
-            oneTapSignUp(activity) {
-                unOneTapSignIn(activity)
-            }
-        }, {
-            unOneTapSignIn(activity)
-        })
-    }
-
-    private fun oneTapSignIn(
-        activity: Activity,
-        signInFailed: () -> Unit,
-        sendIntentFailed: () -> Unit,
-    ) {
-        val signInRequest = BeginSignInRequest.builder()
-            .setGoogleIdTokenRequestOptions(
-                BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
-                    .setSupported(true)
-                    .setServerClientId(getServerClientId())
-                    .setFilterByAuthorizedAccounts(true)
-                    .build()
-            )
-            .setAutoSelectEnabled(true)
-            .build()
-        getOneTapClient(activity).beginSignIn(signInRequest)
-            .addOnSuccessListener { result ->
-                try {
-                    startIntentSenderForResult(
-                        activity,
-                        result.pendingIntent.intentSender, REQ_GOOGLE_ONE_TAP,
-                        null, 0, 0, 0, null
-                    )
-                } catch (e: IntentSender.SendIntentException) {
-                    Log.e(
-                        TAG_GOOGLE_AUTH,
-                        "oneTapSignIn, SendIntentException, e:${e.localizedMessage}"
-                    )
-                    sendIntentFailed()
-                }
-            }
-            .addOnCanceledListener {
-                Log.i(
-                    TAG_GOOGLE_AUTH,
-                    "oneTapSignIn, start one tap ui cancel"
-                )
-                signInFailed()
-            }
-            .addOnCompleteListener {
-                Log.i(
-                    TAG_GOOGLE_AUTH,
-                    "oneTapSignIn, start one tap ui complete, isSuccessful: ${it.isSuccessful}"
-                )
-
-            }
-            .addOnFailureListener { e ->
-                Log.e(
-                    TAG_GOOGLE_AUTH,
-                    "oneTapSignIn, start one tap ui failed, e:${e.localizedMessage}"
-                )
-                signInFailed()
-            }
-    }
-
-    private fun oneTapSignUp(
-        activity: Activity,
-        failed: () -> Unit,
-    ) {
-        val signUpRequest = BeginSignInRequest.builder()
-            .setGoogleIdTokenRequestOptions(
-                BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
-                    .setSupported(true)
-                    .setServerClientId(getServerClientId())
-                    .setFilterByAuthorizedAccounts(false)
-                    .build()
-            )
-            .build()
-        getOneTapClient(activity).beginSignIn(signUpRequest)
-            .addOnSuccessListener {
-                try {
-                    startIntentSenderForResult(
-                        activity,
-                        it.pendingIntent.intentSender, REQ_GOOGLE_ONE_TAP,
-                        null, 0, 0, 0, null
-                    )
-                } catch (e: IntentSender.SendIntentException) {
-                    Log.e(
-                        TAG_GOOGLE_AUTH,
-                        "oneTapSignUp, SendIntentException, e:${e.localizedMessage}"
-                    )
-                    failed()
-                }
-            }
-            .addOnCanceledListener {
-                Log.e(
-                    TAG_GOOGLE_AUTH,
-                    "oneTapSignUp, start one tap ui cancel"
-                )
-                failed()
-            }
-            .addOnCompleteListener {
-                Log.i(
-                    TAG_GOOGLE_AUTH,
-                    "oneTapSignUp, start one tap ui complete, isSuccessful:${it.isSuccessful}"
-                )
-            }
-            .addOnFailureListener {
-                Log.e(
-                    TAG_GOOGLE_AUTH,
-                    "oneTapSignUp, start one tap ui failed, e:${it.localizedMessage}"
-                )
-                failed()
-            }
+        unOneTapSignIn(activity)
     }
 
     private fun getGoogleSignInClient(activity: Activity): GoogleSignInClient {
@@ -193,6 +62,7 @@ class GoogleAuth(
         val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
             .requestIdToken(getServerClientId())
             .requestEmail()
+            .requestProfile()
             .build()
         googleSignInClient = GoogleSignIn.getClient(activity, gso)
         return googleSignInClient!!
@@ -205,36 +75,6 @@ class GoogleAuth(
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
         when (requestCode) {
-            REQ_GOOGLE_ONE_TAP -> {
-                try {
-                    val credential = oneTapClient?.getSignInCredentialFromIntent(intent)
-                    val idToken = credential?.googleIdToken
-                    when {
-                        idToken != null -> {
-                            authCallback?.onSuccess(thirdType, idToken)
-                        }
-                        else -> {
-                            Log.e(TAG_GOOGLE_AUTH, "No ID token")
-                            authCallback?.onFailed(thirdType, "no id token", ERROR_CODE_NO_ID_TOKEN)
-                        }
-                    }
-                } catch (e: ApiException) {
-                    Log.e(TAG_GOOGLE_AUTH, "Get ID Token Exception, e:${e.localizedMessage}")
-                    when (e.statusCode) {
-                        CommonStatusCodes.CANCELED -> {
-                            // Don't re-prompt the user.
-                            showOneTapUI = false
-                            authCallback?.onCancel(thirdType)
-                        }
-                        CommonStatusCodes.NETWORK_ERROR -> {
-                            authCallback?.onFailed(thirdType, e.message ?: "", e.statusCode)
-                        }
-                        else -> {
-                            authCallback?.onFailed(thirdType, e.message ?: "", e.statusCode)
-                        }
-                    }
-                }
-            }
             REQ_GOOGLE_SIGN_IN -> {
                 val task: Task<GoogleSignInAccount> =
                     GoogleSignIn.getSignedInAccountFromIntent(intent)
@@ -269,7 +109,6 @@ class GoogleAuth(
 
     override fun logout() {
         val activity = activityRef?.get() ?: return
-        getOneTapClient(activity).signOut()
         getGoogleSignInClient(activity).signOut()
     }