Java 通过microsoft进行Firebase身份验证-不显示登录选项卡
从firebaseauth教程中获取了一些复制粘贴代码,用于将我的应用程序上的客户端与Microsoft身份验证连接。问题是,登录屏幕没有显示 你可以找到完整的教程 注意,我复制了所有内容只是为了测试连接(不包括可选代码,以简化事情) firebaseAuth.startActivityForSignInWithProvider方法中的问题统计信息。它总是以失败告终。跟踪显示此消息: “FirebaseAuthException…尝试获取包证书哈希时出错。” 我做了教程中的所有事情,包括在Microsoft注册我的应用程序和Firebase身份验证屏幕。我在android studio emulator和实际设备上运行了这段代码,结果相同 我的登录功能:Java 通过microsoft进行Firebase身份验证-不显示登录选项卡,java,android,firebase,Java,Android,Firebase,从firebaseauth教程中获取了一些复制粘贴代码,用于将我的应用程序上的客户端与Microsoft身份验证连接。问题是,登录屏幕没有显示 你可以找到完整的教程 注意,我复制了所有内容只是为了测试连接(不包括可选代码,以简化事情) firebaseAuth.startActivityForSignInWithProvider方法中的问题统计信息。它总是以失败告终。跟踪显示此消息: “FirebaseAuthException…尝试获取包证书哈希时出错。” 我做了教程中的所有事情,包括在Mic
public void signinToMicrosoft(Activity activity) {
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.
}
});
}
public void signinToMicrosoft(活动){
OAuthProvider.Builder provider=OAuthProvider.newBuilder(“microsoft.com”);
Log.e(标记“与microsoft签署”);
Task PendingSultTask=firebaseAuth.getPendingAuthResult();
if(pendingreulttask!=null){
//此处已存在内容!请完成用户的登录。
悬而未决的任务
.addOnSuccessListener(
新OnSuccessListener(){
@凌驾
成功时公共无效(AuthResult AuthResult){
Log.e(标签“待定成功”);
//用户已登录。
//IdP数据可在
//authResult.getAdditionalUserInfo().getProfile()。
//还可以检索OAuth访问令牌:
//authResult.getCredential().getAccessToken()。
}
})
.addOnFailureListener(
新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Log.e(标记“挂起失败:”+e.getMessage());
//处理失败。
}
});
}否则{
Log.e(标记“无待定”);
//没有挂起的结果,因此需要启动登录流。
//见下文。
}
firebaseAuth
.startActivityForSignInWithProvider(活动,provider.build())
.addOnSuccessListener(
新OnSuccessListener(){
@凌驾
成功时公共无效(AuthResult AuthResult){
Log.e(标记“Auth Success”);
//用户已登录。
//IdP数据可在
//authResult.getAdditionalUserInfo().getProfile()。
//还可以检索OAuth访问令牌:
//authResult.getCredential().getAccessToken()。
}
})
.addOnFailureListener(
新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Log.e(标记“身份验证失败:”+e.getMessage()+“\n链接:”+e.getClass().getCanonicalName());
//处理失败。
}
});
}
一个定制的chrome标签本应打开并允许登录Microsoft,但它会在一瞬间弹出并关闭。如果有人有这个问题,或者能帮我解决,我将不胜感激。谢谢 要解决此问题,您需要在android上安装microsoft(hotmail、outlook…)帐户。如果有人仍然存在此问题,我只想与大家分享我的解决方案和类似的问题 TL;DR 您的SHA-1指纹可能被其他Firebase项目使用,因此请删除该指纹或使用其他密钥库进行签名 长版本 我曾参与过一个使用不同Firebase项目的开发和生产环境的项目。我们使用Firebase Auth链接我们Android应用程序的Microsoft登录。在尝试设置项目的开发环境时,我遇到了与上面相同的错误。我们过去只有一个Firebase环境,所以这从来都不是问题
事实证明,当您在创建项目时没有提供SHA-1指纹时,Firebase会在您运行身份验证调用时自动添加它们。这意味着,当我们为测试创建调试APK时,SHA-1指纹被记录到用于实时环境的Firebase项目中,因此当您尝试在另一个项目中添加相同的指纹时,它不会允许您。解决方案是在开发环境中包括SHA-1指纹,但要做到这一点,您需要将其从实时环境(在我的情况下)中删除,并等待该更改反映出来。或者您可以使用另一个未使用的密钥库进行签名。嘿,Asaf,您可以验证在Firebase控制台中注册的SHA-1与您的应用程序签名的SHA-1是否匹配吗?通常,当你看到这个错误时,这就是正在发生的事情。如果这还不能解决问题,请使用模拟器上的Google Play services版本发表评论,并查看更新是否有助于解决问题。嗨,Malcolm,谢谢你的回复。如果你的意思是应用程序的秘密比是的,它匹配,我尝试创建一个新的,并再次做的过程,但仍然没有工作。我用我的手机进行了测试,play services的版本是16.0.89,最新版本SHA-1不同于应用程序机密-它是在您构建应用程序时签名的密钥。请验证您是否已按照s中的说明进行了注册