55
66package org.microg.gms.auth.credentials.identity
77
8+ import android.app.PendingIntent
9+ import android.app.PendingIntent.FLAG_IMMUTABLE
10+ import android.app.PendingIntent.FLAG_UPDATE_CURRENT
811import android.content.Context
12+ import android.content.Intent
913import android.util.Log
1014import androidx.lifecycle.Lifecycle
1115import androidx.lifecycle.LifecycleOwner
@@ -18,6 +22,7 @@ import com.google.android.gms.auth.api.identity.internal.IAuthorizationCallback
1822import com.google.android.gms.auth.api.identity.internal.IAuthorizationService
1923import com.google.android.gms.auth.api.identity.internal.IVerifyWithGoogleCallback
2024import com.google.android.gms.auth.api.signin.GoogleSignInOptions
25+ import com.google.android.gms.auth.api.signin.internal.SignInConfiguration
2126import com.google.android.gms.common.ConnectionResult
2227import com.google.android.gms.common.api.Scope
2328import com.google.android.gms.common.api.Status
@@ -28,10 +33,12 @@ import kotlinx.coroutines.Dispatchers
2833import kotlinx.coroutines.withContext
2934import org.microg.gms.BaseService
3035import org.microg.gms.auth.credentials.FEATURES
36+ import org.microg.gms.auth.signin.AuthSignInActivity
3137import org.microg.gms.auth.signin.SignInConfigurationService
3238import org.microg.gms.auth.signin.getServerAuthTokenManager
3339import org.microg.gms.auth.signin.performSignIn
3440import org.microg.gms.auth.signin.scopeUris
41+ import org.microg.gms.common.Constants
3542import org.microg.gms.common.GmsService
3643import org.microg.gms.common.PackageUtils
3744
@@ -63,13 +70,25 @@ class AuthorizationServiceImpl(val context: Context, val packageName: String, ov
6370 return @launchWhenStarted
6471 }
6572 val googleSignInOptions = GoogleSignInOptions .Builder ().apply {
73+ setAccountName(account.name)
6674 request?.requestedScopes?.forEach { requestScopes(it) }
6775 if (request?.idTokenRequested == true && request.serverClientId != null ) requestIdToken(request.serverClientId)
6876 if (request?.serverAuthCodeRequested == true && request.serverClientId != null ) requestServerAuthCode(request.serverClientId)
6977 }.build()
78+ val intent = Intent (context, AuthSignInActivity ::class .java).apply {
79+ `package` = Constants .GMS_PACKAGE_NAME
80+ putExtra(" config" , SignInConfiguration (packageName, googleSignInOptions))
81+ }
7082 val signInAccount = performSignIn(context, packageName, googleSignInOptions, account, false )
71- callback?.onAuthorized(Status .SUCCESS , AuthorizationResult (signInAccount?.serverAuthCode, signInAccount?.idToken, signInAccount?.idToken, signInAccount?.grantedScopes?.toList().orEmpty().map { it.scopeUri }, signInAccount, null )
72- .also { Log .d(TAG , " authorize: result:$it " ) })
83+ callback?.onAuthorized(Status .SUCCESS ,
84+ AuthorizationResult (
85+ signInAccount?.serverAuthCode,
86+ signInAccount?.idToken,
87+ signInAccount?.idToken,
88+ signInAccount?.grantedScopes?.toList().orEmpty().map { it.scopeUri },
89+ signInAccount,
90+ PendingIntent .getActivity(context, account.hashCode(), intent, FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE )
91+ ).also { Log .d(TAG , " authorize: result:$it " ) })
7392 }
7493 }
7594
0 commit comments