Skip to content

Commit 35c7a06

Browse files
committed
Auth: Fix handling of authorize() command
Includes missing fixes from #2971
1 parent d00ed28 commit 35c7a06

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

play-services-core/src/main/kotlin/org/microg/gms/auth/credentials/identity/AuthorizationService.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
package 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
811
import android.content.Context
12+
import android.content.Intent
913
import android.util.Log
1014
import androidx.lifecycle.Lifecycle
1115
import androidx.lifecycle.LifecycleOwner
@@ -18,6 +22,7 @@ import com.google.android.gms.auth.api.identity.internal.IAuthorizationCallback
1822
import com.google.android.gms.auth.api.identity.internal.IAuthorizationService
1923
import com.google.android.gms.auth.api.identity.internal.IVerifyWithGoogleCallback
2024
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
25+
import com.google.android.gms.auth.api.signin.internal.SignInConfiguration
2126
import com.google.android.gms.common.ConnectionResult
2227
import com.google.android.gms.common.api.Scope
2328
import com.google.android.gms.common.api.Status
@@ -28,10 +33,12 @@ import kotlinx.coroutines.Dispatchers
2833
import kotlinx.coroutines.withContext
2934
import org.microg.gms.BaseService
3035
import org.microg.gms.auth.credentials.FEATURES
36+
import org.microg.gms.auth.signin.AuthSignInActivity
3137
import org.microg.gms.auth.signin.SignInConfigurationService
3238
import org.microg.gms.auth.signin.getServerAuthTokenManager
3339
import org.microg.gms.auth.signin.performSignIn
3440
import org.microg.gms.auth.signin.scopeUris
41+
import org.microg.gms.common.Constants
3542
import org.microg.gms.common.GmsService
3643
import 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

Comments
 (0)