Google Sign-In Redirects Back to Account Selection Instead of Closing the WebView
- 1
- Self Hosted
- Auth
- Flutter

Hello Appwrite Support Team,
I am implementing Google Sign-In in my Flutter app. Everything works perfectly on the emulator. However, on my physical device, when I use the "Sign in with Google" option, it opens an in-app browser to select a Google account.
After successfully signing in and selecting the account, the in-app browser redirects back to the account selection page instead of closing. This behavior differs from the expected outcome where, upon successful authentication, the browser should close, and the app should resume.
I have already declared the necessary activity in the AndroidManifest.xml file.
Here is some code I’ve tried:
<intent-filter android:label="flutter_web_auth_2">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="appwrite-callback-6749dd62000bc24eac8a" />
</intent-filter>
</activity>```
**service.dart**
``` //* Login a user using google
Future<dynamic> continueWithGoogle() async {
try {
await account?.createOAuth2Session(
provider: OAuthProvider.google,
scopes: [
"profile",
"email",
],
);
return true;
} catch (e) {
return e.toString();
}
}```
**signinmethod.dart**
Due to text limit restriection I can't share signinmethod.dart here, Check out my Google docs for signinmethod.dart code: https://docs.google.com/document/d/1kYKQKKxJagkmimhpolxQFhQ59t9GDuRLOV-me_N6EFs/edit?usp=sharing

Device Details:
Model: Redmi Note 10 Pro Brand: Xiaomi Android Version: 13

I have this same issue; I hope we get a solution as soon as possible.

What's the continuewithgoogle function?

What's your code?

I recommend creating a separated issue

I have this:
app_write_client.dart:
Client appWriteClient = Client().setEndpoint('https://cloud.appwrite.io/v1').setProject('6758162500220388bb27');
Account account = Account(appWriteClient);
auth_service.dart:
@singleton
class AuthenticationService {
Future<User> googleSignIn() async{
try {
final response = await account.createOAuth2Session(provider: OAuthProvider.google);
AppLogger.debug('googleSignIn response: ${response.toString()}');
final user = await account.get();
AppLogger.debug('googleSignIn User details: ${user.toMap()}');
return user;
} on AppwriteException catch (error, stackTrace) {
AppLogger.error("googleSignIn Error: $error", stackTrace);
throw error.toString();
}
}
}

in my viewmodel, i have this:
startLoader();
try {
await authenticationService.googleSignIn();
// await Future.delayed(const Duration(microseconds: 500));
navigationService
.navigateToAndRemoveUntilWidget(const AppBottomNavScreen(
selectedIndex: 0,
));
AppLogger.debug("Google Login Success :::");
showCustomToast("Google Login Successful", success: true);
} catch (err, s) {
AppLogger.error("Google Login Error ::: ${err.toString()}", s);
showCustomToast(err.toString());
} finally {
stopLoader();
}
}```

AndroidManifest.xml:
...
<activity android:exported="true" android:name="com.linusu.flutter_web_auth_2.CallbackActivity" >
<intent-filter android:label="flutter_web_auth_2">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="appwrite-callback-6758162500220388bb7" />
</intent-filter>
</activity>
...

Try routing just after the
await account.createOAuthSession
Code

@COCAINE @Utibe Is that working?
Recommended threads
- how many Teams can be created?
I am creating an app where I will let users create groups. This could mean there will be many groups created by user, to isolate those groups properly I am thin...
- android kotlin error updatePhone
package vasu.apps.schooldashboard.Services import android.util.Log import io.appwrite.Client import io.appwrite.ID import io.appwrite.exceptions.AppwriteExcept...
- Cannot create a user
Hi, I am using a lowcoder frontend and trying to create a user in Appwrite (python function). Unfortunately, all I got is an error: "Raw body: Error". It means...
