From 4d795e4524148893e0fcd8567cde015b09f24d64 Mon Sep 17 00:00:00 2001 From: davinci9196 Date: Tue, 15 Oct 2024 13:58:14 +0800 Subject: [PATCH 1/5] Fixed the issue that Limbo game cannot be logged in --- .../main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt index dcab8f3c53..3ccaf758f9 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt @@ -78,7 +78,7 @@ class AuthSignInServiceImpl( lifecycleScope.launchWhenStarted { try { val account = account ?: options?.account ?: SignInConfigurationService.getDefaultAccount(context, packageName) - if (account != null && options?.isForceCodeForRefreshToken != true && options?.includeUnacceptableScope != true) { + if (account != null && options?.isForceCodeForRefreshToken != true) { if (getOAuthManager(context, packageName, options, account).isPermitted || AuthPrefs.isTrustGooglePermitted(context)) { val googleSignInAccount = performSignIn(context, packageName, options, account) if (googleSignInAccount != null) { From b22b13ca31020d08902dbfbae893ce0c5a7fe0cb Mon Sep 17 00:00:00 2001 From: davinci9196 Date: Mon, 11 Nov 2024 11:47:36 +0800 Subject: [PATCH 2/5] Added FRAG Unable to log in fix --- .../org/microg/gms/auth/signin/AuthSignInService.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt index 3ccaf758f9..c0bd6f4de0 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt @@ -16,6 +16,7 @@ package org.microg.gms.auth.signin import android.accounts.Account +import android.accounts.AccountManager import android.content.Context import android.os.Bundle import android.os.Parcel @@ -37,6 +38,7 @@ import com.google.android.gms.common.internal.ConnectionInfo import com.google.android.gms.common.internal.GetServiceRequest import com.google.android.gms.common.internal.IGmsCallbacks import org.microg.gms.BaseService +import org.microg.gms.auth.AuthConstants import org.microg.gms.auth.AuthPrefs import org.microg.gms.common.GmsService import org.microg.gms.common.PackageUtils @@ -77,10 +79,14 @@ class AuthSignInServiceImpl( } lifecycleScope.launchWhenStarted { try { - val account = account ?: options?.account ?: SignInConfigurationService.getDefaultAccount(context, packageName) + val account = account + ?: options?.account + ?: SignInConfigurationService.getDefaultAccount(context, packageName) + ?: AccountManager.get(context).getAccountsByType(AuthConstants.DEFAULT_ACCOUNT_TYPE).firstOrNull() + Log.d(TAG, "silentSignIn: account -> ${account?.name}") if (account != null && options?.isForceCodeForRefreshToken != true) { if (getOAuthManager(context, packageName, options, account).isPermitted || AuthPrefs.isTrustGooglePermitted(context)) { - val googleSignInAccount = performSignIn(context, packageName, options, account) + val googleSignInAccount = performSignIn(context, packageName, options, account, true) if (googleSignInAccount != null) { sendResult(googleSignInAccount, Status(CommonStatusCodes.SUCCESS)) } else { From cddf7a4591560378e62c41ab3b8e494f1543e3d4 Mon Sep 17 00:00:00 2001 From: davinci9196 Date: Wed, 11 Dec 2024 17:25:35 +0800 Subject: [PATCH 3/5] Uncheck the default permission --- play-services-core/src/main/AndroidManifest.xml | 2 +- .../kotlin/org/microg/gms/auth/signin/AuthSignInService.kt | 2 +- .../main/kotlin/org/microg/gms/auth/signin/extensions.kt | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index 0dbd7c07e2..73c5ce94ec 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -570,8 +570,8 @@ diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt index c0bd6f4de0..c139cd5413 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/AuthSignInService.kt @@ -86,7 +86,7 @@ class AuthSignInServiceImpl( Log.d(TAG, "silentSignIn: account -> ${account?.name}") if (account != null && options?.isForceCodeForRefreshToken != true) { if (getOAuthManager(context, packageName, options, account).isPermitted || AuthPrefs.isTrustGooglePermitted(context)) { - val googleSignInAccount = performSignIn(context, packageName, options, account, true) + val googleSignInAccount = performSignIn(context, packageName, options, account) if (googleSignInAccount != null) { sendResult(googleSignInAccount, Status(CommonStatusCodes.SUCCESS)) } else { diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt index 4c860430e5..6d9d140348 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt @@ -104,7 +104,7 @@ suspend fun checkAccountAuthStatus(context: Context, packageName: String, scopeL suspend fun performSignIn(context: Context, packageName: String, options: GoogleSignInOptions?, account: Account, permitted: Boolean = false): GoogleSignInAccount? { val authManager = getOAuthManager(context, packageName, options, account) val authResponse = withContext(Dispatchers.IO) { - if (options?.includeUnacceptableScope == true) { + if (options?.includeUnacceptableScope == true || !permitted) { authManager.setTokenRequestOptions(consentRequestOptions) } if (permitted) authManager.isPermitted = true @@ -134,7 +134,8 @@ suspend fun performSignIn(context: Context, packageName: String, options: Google val serverAuthCode: String? = if (options?.isServerAuthCodeRequested == true) serverAuthTokenResponse?.auth else null val expirationTime = min(authResponse.expiry.orMaxIfNegative(), idTokenResponse?.expiry.orMaxIfNegative()) val obfuscatedIdentifier: String = MessageDigest.getInstance("MD5").digest("$googleUserId:$packageName".encodeToByteArray()).toHexString().uppercase() - val grantedScopes = authResponse.grantedScopes?.split(" ").orEmpty().map { Scope(it) }.toSet() + val grantedScopeList = authResponse.grantedScopes ?: idTokenResponse?.grantedScopes ?: serverAuthTokenResponse?.grantedScopes + val grantedScopes = grantedScopeList?.split(" ").orEmpty().map { Scope(it) }.toSet() val (givenName, familyName, displayName, photoUrl) = if (options?.includeProfile == true) { val databaseHelper = DatabaseHelper(context) val cursor = databaseHelper.getOwner(account.name) @@ -184,6 +185,7 @@ suspend fun performConsentView(context: Context, packageName: String, account: A return withContext(Dispatchers.IO) { val deferred = CompletableDeferred() val intent = Intent(context, ConsentSignInActivity::class.java).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK putExtra(CONSENT_URL, consentResponse.consentUrl) putExtra(CONSENT_MESSENGER, Messenger(object : Handler(Looper.getMainLooper()) { override fun handleMessage(msg: Message) { From 2eff0d1a69432badff52c0f73cc303a6f1dfdb43 Mon Sep 17 00:00:00 2001 From: davinci9196 Date: Wed, 11 Dec 2024 20:11:22 +0800 Subject: [PATCH 4/5] Switch to UI thread --- play-services-core/src/main/AndroidManifest.xml | 1 + .../org/microg/gms/auth/consent/ConsentSignInActivity.kt | 6 +++--- .../main/kotlin/org/microg/gms/auth/signin/extensions.kt | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index 73c5ce94ec..5472f3c5d0 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -571,6 +571,7 @@ diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/consent/ConsentSignInActivity.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/consent/ConsentSignInActivity.kt index 9a3380e91a..d7b2a9cd1a 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/consent/ConsentSignInActivity.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/consent/ConsentSignInActivity.kt @@ -19,6 +19,7 @@ import android.webkit.JavascriptInterface import android.webkit.WebView import android.webkit.WebViewClient import android.widget.ProgressBar +import androidx.core.os.bundleOf import com.google.android.gms.R import org.microg.gms.profile.Build.generateWebViewUserAgentString import org.microg.gms.profile.ProfileManager @@ -119,12 +120,11 @@ class ConsentSignInActivity : Activity() { try { Log.d(TAG, "sendReplay result -> $result") val obtain = Message.obtain() - obtain.what = 1 - obtain.obj = result + obtain.data = bundleOf(Pair(CONSENT_RESULT, result)) messenger?.send(obtain) sendSuccessResult = true } catch (e: Exception) { - Log.d(TAG, "sendReplay Exception -> " + e.message) + Log.w(TAG, "sendReplay Exception -> ", e) } } diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt index 6d9d140348..bcd9ec7b2f 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/signin/extensions.kt @@ -189,9 +189,9 @@ suspend fun performConsentView(context: Context, packageName: String, account: A putExtra(CONSENT_URL, consentResponse.consentUrl) putExtra(CONSENT_MESSENGER, Messenger(object : Handler(Looper.getMainLooper()) { override fun handleMessage(msg: Message) { - val content = msg.obj - Log.d(TAG, "performConsentView: ConsentSignInActivity deferred ") - deferred.complete(content?.toString()) + val content = msg.data.getString(CONSENT_RESULT) + Log.d(TAG, "performConsentView: ConsentSignInActivity deferred content: $content") + deferred.complete(content) } })) cookies.forEachIndexed { index, cookie -> From 1d77f2d3263a7da320c99ae39ef30a742e798d7f Mon Sep 17 00:00:00 2001 From: Marvin W Date: Wed, 18 Dec 2024 10:41:54 +0100 Subject: [PATCH 5/5] Nit: Reduce diff by not reordering process line --- play-services-core/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index 3e6d70b3b0..c93f7186f0 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -570,8 +570,8 @@