呼叫AuthUI.getInstance().signOut(this)
从Firebase帐户中退出会显示 Google Play服务“电话”访问权限请求对话框(如果用户出于任何原因禁用了该权限)。
如果用户拒绝授予访问注销失败:
com.google.android.gms.common.api.ApiException: 17: Error resolution was canceled by the user, original error message: CANCELED: null
与此同时,无需电话权限即可登录。
在Google docs中,这包括下一个:
READ_PHONE_STATE
READ_PHONE_NUMBERS
CALL_PHONE
ANSWER_PHONE_CALLS
READ_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS
考虑到登录使用的是电子邮件帐户或Google帐户(而不是电话/短信),我在此列表中没有看到与帐户或Firebase相关的任何内容。再一次,无需权限即可登录。
稍后添加:在尝试调试后,我发现 signOut()最终调用了 signOutIdps(),该调用又依次调用了 GoogleSignIn.getClient (上下文,GoogleSignInOptions.DEFAULT_SIGN_IN)。 signOut(),但Android Studio中没有其他可用的源代码。
答案 0 :(得分:1)
FirebaseAuth.getInstance().signOut();
的问题在于它clears the user from disk cache,因此您需要 WRITE_EXTERNAL_STORAGE 权限。