Android 通过移动数据的Firebase匿名身份验证失败
当设备通过移动数据连接连接时,我遇到Firebase身份验证问题。如果通过WiFi连接,则验证工作正常 我正在使用以下代码进行身份验证:Android 通过移动数据的Firebase匿名身份验证失败,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,当设备通过移动数据连接连接时,我遇到Firebase身份验证问题。如果通过WiFi连接,则验证工作正常 我正在使用以下代码进行身份验证: public class MyAuthActivity extends Activity { protected FirebaseAuth auth; protected FirebaseAuth.AuthStateListener authListener; protected FirebaseUser user; @Ov
public class MyAuthActivity extends Activity
{
protected FirebaseAuth auth;
protected FirebaseAuth.AuthStateListener authListener;
protected FirebaseUser user;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
auth = FirebaseAuth.getInstance();
authListener = new FirebaseAuth.AuthStateListener()
{
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth)
{
user = firebaseAuth.getCurrentUser();
if (user != null)
{
// User is signed in
Log.d("APP", "onAuthStateChanged:signed_in: " + user.getUid());
}
else
{
// User is signed out
Log.d("APP", "onAuthStateChanged:signed_out");
}
}
};
auth.addAuthStateListener(authListener);
auth.signInAnonymously()
.addOnFailureListener(this, new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{
Log.w("APP", "signInAnonymously failure: ", e);
}
})
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task)
{
Log.d("APP", "signInAnonymously:onComplete:" + task.isSuccessful());
if (!task.isSuccessful())
{
Log.w("APP", "signInAnonymously", task.getException());
}
}
});
}
}
公共类MyAuthActivity扩展活动
{
受保护的FirebaseAuth auth;
受保护的FirebaseAuth.AuthStateListener authListener;
受保护的FirebaseUser用户;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
auth=FirebaseAuth.getInstance();
authListener=new FirebaseAuth.AuthStateListener()
{
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth)
{
user=firebaseAuth.getCurrentUser();
如果(用户!=null)
{
//用户已登录
Log.d(“应用程序”、“onAuthStateChanged:signed_in:”+user.getUid());
}
其他的
{
//用户已注销
Log.d(“应用程序”、“onAuthStateChanged:已注销”);
}
}
};
auth.addAuthStateListener(authListener);
署名
.addOnFailureListener(此,新的OnFailureListener()
{
@凌驾
public void onFailure(@NonNull异常e)
{
Log.w(“应用程序”,“重大故障:”,e);
}
})
.addOnCompleteListener(这是新的OnCompleteListener()
{
@凌驾
未完成的公共void(@NonNull任务)
{
Log.d(“APP”,“signinanoymously:onComplete:+task.issusful());
如果(!task.issusccessful())
{
Log.w(“APP”,“signinanoymously”,task.getException());
}
}
});
}
}
通过移动数据连接时收到错误:
重大的失败:
com.google.firebase.FirebaseNetworkException:网络错误(例如
发生超时、连接中断或无法访问主机)。
位于com.google.android.gms.internal.zzblv.zzce(未知来源)
在com.google.android.gms.internal.zzbls$zzj.zza(未知来源)
位于com.google.android.gms.internal.zzbmd.zzcf(未知来源)
位于com.google.android.gms.internal.zzbmd$zza.onFailure(未知来源)
位于com.google.android.gms.internal.zzbly$zza.onTransact(未知来源)
位于android.os.Binder.execTransact(Binder.java:404)
在dalvik.system.NativeStart.run(本机方法)
我能做些什么来解决上述问题,或者获得更多关于问题真正原因的信息
另外,手机通过移动数据运行良好,并成功访问互联网和谷歌Play商店
Firebase版本10.2.0,Android API 19
一些补充资料。上述身份验证的主要目的是对Firebase数据库进行访问身份验证
如果我允许对数据库进行未经身份验证的访问,我可以通过任何类型的连接(移动数据和WiFi)连接和检索数据。身份验证是唯一意外失败的部分。发现以前的答案可能与此相关 Firebase不限制任何互联网连接 您能否使用以下代码检查移动数据连接的状态(代码取自)
检查此项以获得对DB的未经验证和验证的访问权限,以帮助您调试您的问题是否仍然存在?@oussemaroua是。@PN10您是否阅读了问题。一切都是通过WiFi连接实现的,但只有通过移动数据才能实现。当然,匿名登录已打开。您是否尝试使用不同运营商的移动数据连接?@azizbekian否,因为我目前只能访问一个运营商。如果操作员有什么过错,那么我也想知道如何证明(调试)。问题是为什么只有身份验证失败,为什么只有通过移动数据?
private static final String DEBUG_TAG = "NetworkStatusExample";
...
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isMobileConn = networkInfo.isConnected();
Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);