当前位置: 首页 > 知识库问答 >
问题:

Firebase身份验证签名在卸载时不工作

孔运珧
2023-03-14
    <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方法

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();
}

共有1个答案

呼延学
2023-03-14

你不是唯一一个在苦苦挣扎的人。我也有类似问题。重新安装(或更新)应用程序后,我在BaseActivity中检查用户是否已登录。他是..FireBaseAuth.GetInstance().GetCurrentUser()返回了非空值。因此,当我使用uid从firebase数据库获取数据时,我得到了一个混乱的东西--一些随机项。

还要注意,我只能在某些设备上复制它。例如,我在Nexus5x上得到了非空值,但在OnePlue3T(8.0.0)上没有。

经过一番调查,我发现了几个有趣的事实。

事实2

Android应用有时会在重新安装应用后记得自己的数据,因为自动备份。更多详情请看帖子。

解决方案

<application
  android:allowBackup="false"
  android:fullBackupContent="false"
  ...>
 类似资料:
  • 在本章中,我们将匿名认证用户。 步骤1 - 启用匿名身份验证 这和我们以前的章节是一样的。需要打开Firebase信息中心,点击侧边菜单中的Auth和标签栏内的认证方法,需要启用匿名身份验证。 第2步 - 登录功能 可以使用方法进行此认证。 示例 让我们来看看下面的例子,参考示例代码 -

  • 我正在使用Firebase Google登录。它可以通过USB调试完美地工作。但当我生成签名的APK时,它停止工作。无法登录。在Android5.1上使用它

  • 电话身份验证失败,出现以下异常: PlatformException(ERROR_SESSION_EXPIRED,sms代码已过期。请重新发送验证码重试。,null) 但如果我使用的电话号码不同于我的电话号码,它就会起作用。我从play store中添加了SHA-1和SHA-256指纹到firebase,并替换了google-services.json。 这是我的代码:

  • 当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID? 我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载

  • 我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?

  • 我在令牌使用者上得到以下错误。任何帮助解决这将是非常感谢的。多谢了。 “IDX10503:签名验证失败。 公共无效配置(IApplicationBuilder应用程序)