通过Microsoft Firebase身份验证-登录选项卡未显示

时间:2019-03-30 21:48:23

标签: java android firebase

从firebaseauth教程中获得了一些复制粘贴代码,以使用Microsoft身份验证连接我的应用程序上的客户端。问题是登录屏幕不显示

您可以在此处找到完整的教程: https://firebase.google.com/docs/auth/android/microsoft-oauth

注意,我确实复制了所有内容只是为了测试连接(不包括可选代码,以简化操作)

firebaseAuth.startActivityForSignInWithProvider方法的问题统计信息。它总是以失败而告终。跟踪显示此消息: “ FirebaseAuthException ...尝试获取软件包证书哈希时出错。”

我完成了本教程中的所有操作,包括在Microsoft和Firebase身份验证屏幕上注册我的应用程序。我在android studio模拟器和实际设备上运行了这段代码,结果相同

我的登录功能:

public void signinToMicrosoft(活动活动){

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("microsoft.com");
    Log.e(TAG,"Signing with microsoft");


    Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult();
    if (pendingResultTask != null) {
        // There's something already here! Finish the sign-in for your user.
        pendingResultTask
                .addOnSuccessListener(
                        new OnSuccessListener<AuthResult>() {
                            @Override
                            public void onSuccess(AuthResult authResult) {
                                Log.e(TAG,"Pending Success");
                                // User is signed in.
                                // IdP data available in
                                // authResult.getAdditionalUserInfo().getProfile().
                                // The OAuth access token can also be retrieved:
                                // authResult.getCredential().getAccessToken().
                            }
                        })
                .addOnFailureListener(
                        new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Log.e(TAG,"Pending Failed: "+e.getMessage());
                                // Handle failure.
                            }
                        });
    } else {
        Log.e(TAG,"No Pending");
        // There's no pending result so you need to start the sign-in flow.
        // See below.
    }

    firebaseAuth
            .startActivityForSignInWithProvider(activity, provider.build())
            .addOnSuccessListener(
                    new OnSuccessListener<AuthResult>() {
                        @Override
                        public void onSuccess(AuthResult authResult) {
                            Log.e(TAG,"Auth Success");
                            // User is signed in.
                            // IdP data available in
                            // authResult.getAdditionalUserInfo().getProfile().
                            // The OAuth access token can also be retrieved:
                            // authResult.getCredential().getAccessToken().
                        }
                    })
            .addOnFailureListener(
                    new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.e(TAG,"Auth Failed: "+e.getMessage() + "\nTrace: "+ e.getClass().getCanonicalName());
                            // Handle failure.
                        }
                    });


}

一个自定义的chrome标签本应该打开并允许对Microsoft进行签名,但它突然弹出并关闭。如果有人遇到问题或为我解决,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

如果有人仍然有这个问题,我只想分享我的解决方案和与此类似的问题。

TL; DR

您的SHA-1指纹可能被另一个Firebase项目使用,因此请删除该指纹或使用其他密钥库进行签名

长版

我从事的项目具有使用不同Firebase项目的开发和生产环境。我们使用Firebase Auth为我们的Android应用程序链接Microsoft登录。尝试设置项目的开发环境时,出现与上述相同的错误。过去,Firebase只有一个环境,所以这从来都不是问题。

事实证明,当您在创建项目时未提供SHA-1指纹时,Firebase在运行身份验证呼叫时会自动添加它们。这意味着,当我们创建用于测试的调试APK时,SHA-1指纹会记录到旨在用于实时环境的Firebase项目中,因此,当您尝试在另一个项目中添加相同的指纹时,它不会让您。解决方案是将SHA-1指纹包含在开发环境中,但要这样做,您需要从实时环境中删除该指纹(以我为例),然后等待该更改反映出来。或者,您可以使用其他未使用的密钥库进行签名。

答案 1 :(得分:0)

您需要在Android上安装Microsoft(Hotmail,Outlook ...)帐户,才能解决此问题。