I'm using Sign-in with Google method to sign-in a user in my app.
Problems - Update:
If I uninstall the app (after sign-out or without sign-out) and re-install the app, FirebaseAuth.getInstance().getCurrentUser() comes non-null. So, the user gets access to the account.
I even tried by clearing the app data, the problem still exists.
The app was working fine before adding 'FirebaseInstanceIdService' and 'FirebaseMessagingService' services. Means, it was signing-out automatically after uninstalling.
Manifest.xml
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
<meta-data android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data android:name="firebase_analytics_collection_enabled"
android:value="false" />
....
<service
android:name=".services.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".services.MyFirebaseInstanceIDService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
....
MyFirebaseMessagingService.class
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.e(TAG, String.valueOf(remoteMessage));
}
}
MyFirebaseInstanceIDService.class
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "InstanceIdService";
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
if (FirebaseAuth.getInstance().getCurrentUser() == null){
return;
}
String tokenId = FirebaseInstanceId.getInstance().getToken();
saveTokenIdToDatabase(tokenId);
}
}
signOutAccount method
private void signOutAccount(){
FirebaseAuth.getInstance.signOut();
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finishAffinity();
}