diff --git a/android/src/main/java/com/credentialsmanager/handlers/CredentialHandler.kt b/android/src/main/java/com/credentialsmanager/handlers/CredentialHandler.kt index 2cd259a..6928b3b 100644 --- a/android/src/main/java/com/credentialsmanager/handlers/CredentialHandler.kt +++ b/android/src/main/java/com/credentialsmanager/handlers/CredentialHandler.kt @@ -126,10 +126,16 @@ class CredentialHandler( val nonce = googleParams?.getString("nonce") ?: "" val serverClientId = googleParams?.getString("serverClientId") ?: "" val autoSelectEnabled = googleParams?.getBoolean("autoSelectEnabled") ?: false + // Default to true for sign-in (show only authorized accounts) + val filterByAuthorizedAccounts = if (googleParams?.hasKey("filterByAuthorizedAccounts") == true) { + googleParams.getBoolean("filterByAuthorizedAccounts") + } else { + true + } credentialOptions.add( getGoogleId( - true, + filterByAuthorizedAccounts, nonce, serverClientId, autoSelectEnabled, diff --git a/android/src/newarch/java/com/credentialsmanager/CredentialsManagerModule.kt b/android/src/newarch/java/com/credentialsmanager/CredentialsManagerModule.kt index 6323eaa..664814d 100644 --- a/android/src/newarch/java/com/credentialsmanager/CredentialsManagerModule.kt +++ b/android/src/newarch/java/com/credentialsmanager/CredentialsManagerModule.kt @@ -117,10 +117,16 @@ class CredentialsManagerModule( val nonce = requestObject.getString("nonce") ?: "" val serverClientId = requestObject.getString("serverClientId") ?: "" val autoSelectEnabled = requestObject.getBoolean("autoSelectEnabled") + // Default to false for sign-up (show all accounts) + val filterByAuthorizedAccounts = if (requestObject.hasKey("filterByAuthorizedAccounts")) { + requestObject.getBoolean("filterByAuthorizedAccounts") + } else { + false + } val googleIdOption = credentialHandler.getGoogleId( - setFilterByAuthorizedAccounts = true, + setFilterByAuthorizedAccounts = filterByAuthorizedAccounts, nonce = nonce, serverClientId = serverClientId, autoSelectEnabled = autoSelectEnabled, diff --git a/android/src/oldarch/java/com/credentialsmanager/CredentialsManagerModule.kt b/android/src/oldarch/java/com/credentialsmanager/CredentialsManagerModule.kt index a7ac8f5..e35cdb3 100644 --- a/android/src/oldarch/java/com/credentialsmanager/CredentialsManagerModule.kt +++ b/android/src/oldarch/java/com/credentialsmanager/CredentialsManagerModule.kt @@ -138,10 +138,16 @@ class CredentialsManagerModule( val nonce = requestObject.getString("nonce") ?: "" val serverClientId = requestObject.getString("serverClientId") ?: "" val autoSelectEnabled = requestObject.getBoolean("autoSelectEnabled") + // Default to false for sign-up (show all accounts) + val filterByAuthorizedAccounts = if (requestObject.hasKey("filterByAuthorizedAccounts")) { + requestObject.getBoolean("filterByAuthorizedAccounts") + } else { + false + } val googleIdOption = credentialHandler.getGoogleId( - setFilterByAuthorizedAccounts = false, + setFilterByAuthorizedAccounts = filterByAuthorizedAccounts, nonce = nonce, serverClientId = serverClientId, autoSelectEnabled = autoSelectEnabled, @@ -158,7 +164,7 @@ class CredentialsManagerModule( Log.d("CredentialManager", "NoCredentialException") val googleIdOption = credentialHandler.getGoogleId( - setFilterByAuthorizedAccounts = false, + setFilterByAuthorizedAccounts = filterByAuthorizedAccounts, nonce = nonce, serverClientId = serverClientId, autoSelectEnabled = autoSelectEnabled, diff --git a/example/android/.kotlin/errors/errors-1760610500670.log b/example/android/.kotlin/errors/errors-1760610500670.log new file mode 100644 index 0000000..1219b50 --- /dev/null +++ b/example/android/.kotlin/errors/errors-1760610500670.log @@ -0,0 +1,4 @@ +kotlin version: 2.0.21 +error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output: + 1. Kotlin compile daemon is ready + diff --git a/example/src/App.tsx b/example/src/App.tsx index b798ba1..00d301f 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -61,6 +61,8 @@ export default function App() { googleSignIn: { serverClientId: WEB_CLIENT_ID, autoSelectEnabled: true, + // Show only accounts that have previously authorized the app + filterByAuthorizedAccounts: true, }, appleSignIn: { requestedScopes: ['fullName', 'email'], @@ -116,6 +118,8 @@ export default function App() { const credential = await signUpWithGoogle({ serverClientId: WEB_CLIENT_ID, autoSelectEnabled: false, + // Show all Google accounts on the device, not just authorized ones + filterByAuthorizedAccounts: false, }); if (credential.type === 'google-signin') { console.log('Google credentials:', { diff --git a/src/NativeCredentialsManager.ts b/src/NativeCredentialsManager.ts index 0f38979..ac72ad7 100644 --- a/src/NativeCredentialsManager.ts +++ b/src/NativeCredentialsManager.ts @@ -30,6 +30,7 @@ type GoogleSignInParams = { nonce: string; serverClientId: string; autoSelectEnabled: boolean; + filterByAuthorizedAccounts?: boolean; }; export type GoogleCredential = { diff --git a/src/index.tsx b/src/index.tsx index 7195055..f711c8c 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -13,6 +13,7 @@ type GoogleSignInParams = { nonce?: string; serverClientId: string; autoSelectEnabled?: boolean; + filterByAuthorizedAccounts?: boolean; }; type AppleSignInParams = { @@ -70,6 +71,7 @@ export function signIn( serverClientId: string; nonce: string; autoSelectEnabled: boolean; + filterByAuthorizedAccounts: boolean; }; appleSignIn?: { nonce: string; @@ -84,6 +86,8 @@ export function signIn( serverClientId: params.googleSignIn?.serverClientId ?? '', nonce: params.googleSignIn?.nonce ?? '', autoSelectEnabled: params.googleSignIn?.autoSelectEnabled ?? true, + filterByAuthorizedAccounts: + params.googleSignIn?.filterByAuthorizedAccounts ?? true, }; } @@ -118,6 +122,7 @@ export function signUpWithGoogle( ...params, nonce: params.nonce ?? '', autoSelectEnabled: params.autoSelectEnabled ?? true, + filterByAuthorizedAccounts: params.filterByAuthorizedAccounts ?? false, }); }