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

GetLastSignedInAccount()在发布版本时返回null

夔庆
2023-03-14
        setContentView(R.layout.activity_login);
        SignInButton signInButton = findViewById(R.id.sign_in_button);
        signInButton.setSize(SignInButton.SIZE_WIDE);

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();
mGoogleSignInClient = GoogleSignIn.getClient(this, so);
}
    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        // Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = task.getResult(ApiException.class);
            Log.e(TAG, "firebaseAuthWithGoogle:" + account.getId());
            //firebaseAuthWithGoogle(account.getIdToken());
        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.e(TAG, "Google sign in failed", e);
        }
        handleSignInResult(task);
    }
}
 private void handleSignInResult(Task<GoogleSignInAccount> 
   completedTask) {
                String personName = "", personEmail = "", aid = "";
                 Uri personPhoto = Uri.parse("");
                // GoogleSignInAccount acct = 
    GoogleSignIn.getLastSignedInAccount(this);
                  GoogleSignInAccount acct = completedTask.getResult();
                  if (acct != null) {
                     personName = acct.getDisplayName();
                     personEmail = acct.getEmail();
                     personPhoto = acct.getPhotoUrl();
                     aid = acct.getId();
                     Log.e("ID_TOKEN", acct.getIdToken() + "");
                 } 
      }

暂时还没有答案

 类似资料:
  • 版本号 采用三位版本号,分别是主版本号、次版本号、修订版本号。例如 5.1.2。 参见: http://semver.org/lang/zh-CN/。 主版本号:主版本号内的所有版本必须相互兼容;与其它主版本号不一定完全兼容,尽量向下兼容。 次版本号:代表新特性增强。版本号越大特性越丰富。 修订版本号:代表BugFix版本。只做bug修复使用,版本号越大越稳定。 版本维护 最多同时维护两个版本。

  • 我有一个奇怪的问题,我的调试版本工作正常,但是在签署并生成一个应用程序包后,我将其上传到Play商店,该应用程序立即崩溃(我在具有我的应用程序的商店版本的手机上运行LogCat,我看到它与AndroidX ConstraintLayout有关,但无法复制它)。我认为和版本之间有一些区别,所以我开始调试我的发布版本。 当我这样做时,Android Studio无法安装APK,出现以下错误: 安装失败

  • 我正在上尝试在发布模式下构建我的项目。 在调试模式下一切正常,但是在发布模式下会出现以下错误... 问题是异常消息不显示发生错误的类和方法的名称。 我在项目中使用的所有第三方库都是在中指定的。 如何解决此问题?

  • 本页介绍了 MOSN 的 版本发布步骤。 MOSN 版本发布步骤 一、冻结代码 在准备一个版本发布期间,停止代码往 master 分支的合并 二、整理 Release notes 基于 Github 的 PullRequest 记录,整理本次发布的内容与上一个版本之间的差异,需要注意仅统计目标分支是 master 且正常合并的 PullRequest 首先记录原始的信息,统一记录在 MOSN Re

  • 以下版本的发布文件包含在 npm 和 CDN 中。github 做为源码管理仓库,不包含发布文件。 版本 兼容性 错误提示 DevTool 组件反解 语法压缩 san.js san.min.js san.dev.js san.modern.js san.modern.min.js san.modern.dev.js san.spa.js san.spa.min.js san.spa.dev.js

  • 稳定化是让一个发布分支进入发布状态的过程;也就是决定哪些变更将会进入发布版本,并以此为根据修整分支的内容。 “决定”一词有许多潜在的不幸。在协作软件项目中最后一分钟特性冲击是非常常见的现象:当开发者看到软件发布将要发生,他们便混乱的结束当前的变更,不希望错过这班船。当然,这是在发布时你最不想看到的场面。如果人们能在比较以舒适的节奏,无需担心变更是进入这个版本还是下一个版本时完成这个特性,效果会更好