Firebase AuthUI ... signOut()需要电话许可

时间:2018-07-17 17:37:31

标签: android firebase firebase-authentication

呼叫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

与此同时,无需电话权限即可登录。

  1. 要求获得此类退出许可的原因可能是什么?
  2. 是否可以在不强制用户授予访问权限的情况下以其他方式注销?

在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中没有其他可用的源代码。

1 个答案:

答案 0 :(得分:1)

FirebaseAuth.getInstance().signOut();的问题在于它clears the user from disk cache,因此您需要 WRITE_EXTERNAL_STORAGE 权限。