通过移动数据的 Firebase 匿名身份验证失败
Posted
技术标签:
【中文标题】通过移动数据的 Firebase 匿名身份验证失败【英文标题】:Firebase anonymous authentication failure through Mobile Data 【发布时间】:2017-08-26 16:24:34 【问题描述】:当设备通过移动数据连接连接时,我遇到了 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());
);
通过移动数据连接时收到错误:
signInAnonymously 失败: 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(Native Method)
我可以做些什么来解决上述问题或获取有关真正导致问题的更多信息。
手机通过移动数据运行良好,并成功访问互联网和 Google Play 商店。
Firebase 版本 10.2.0,Android API 19
一些附加信息。上述身份验证的主要目的是对 Firebase 数据库的访问身份验证。
如果我允许未经身份验证的数据库访问,我可以通过任何类型的连接(移动数据和 WiFi)连接和检索数据。身份验证是唯一意外失败的部分。
【问题讨论】:
你的问题还有吗? @OussemaAroua 是的。 @PN10 你有没有读过这个问题。一切都通过 WiFi 连接工作,但它只能通过移动数据失败。当然是开启了匿名登录。 您是否尝试过使用不同运营商的移动数据连接? @azizbekian 不,因为我目前只能访问一名操作员。如果有任何机会操作员应该受到责备,那么我也想知道如何证明(调试)这一点。问题是为什么只有身份验证失败,为什么只能通过移动数据? 【参考方案1】:发现以前的答案可能是相关的
https://***.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);
选中此选项以获得对 DB 的非身份验证和身份验证访问,以帮助您调试
【讨论】:
以上是关于通过移动数据的 Firebase 匿名身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章
firebase react-native:通过电话身份验证将匿名用户转换为永久用户