从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进行签名,但它突然弹出并关闭。如果有人遇到问题或为我解决,将不胜感激。谢谢!
答案 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 ...)帐户,才能解决此问题。