当设备通过移动数据连接连接时,我遇到Firebase身份验证问题。如果通过WiFi连接验证工作正常。
我正在使用以下代码进行身份验证:
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());
}
}
});
}
}
通过移动数据连接时收到错误:
signIn匿名失败: 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(原生方法)
我有什么办法可以解决上述问题或获取有关真正导致问题的更多信息。
移动电话在移动数据方面运行良好,并成功访问互联网和Google Play商店。
Firebase版本10.2.0,Android API 19
一些其他信息。上述身份验证的主要目的是对Firebase数据库进行访问身份验证。
如果我允许对数据库进行非认证访问,我可以通过任何类型的连接(移动数据和WiFi)连接和检索数据。身份验证是意外失败的唯一部分。
答案 0 :(得分:0)
找到上一个答案可能是相关的
https://stackoverflow.com/a/45397853/2735586
Firebase不会限制任何互联网连接
您可以使用以下方法检查移动数据连接的状态(代码来自https://developer.android.com/training/basics/network-ops/managing.html#check-connection)
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);
检查此未经过身份验证的&amp;经过身份验证的数据库访问以帮助您进行调试