【问题标题】:Firebase AuthUI...signOut() requires phone permissionFirebase AuthUI...signOut() 需要电话权限
【发布时间】:2018-12-25 12:09:30
【问题描述】:

调用 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. 是否可以通过其他方式退出而不强制用户授予访问权限?

来自谷歌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(context , GoogleSignInOptions.DEFAULT_SIGN_IN)。signOut() 但在 Android Studio 中没有更多可用的源代码。

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    FirebaseAuth.getInstance().signOut(); 的问题在于它是clears the user from disk cache,所以你需要 WRITE_EXTERNAL_STORAGE 权限。

    【讨论】:

    • 不幸的是它没有帮助。不应该,因为这不是我的应用权限,而是 Google Play 服务。
    • 你能尝试使用语法FirebaseAuth.getInstance().signOut();吗?
    • 抱歉,我错过了您使用 FirebaseAuth 而不是 AuthUI。现在可以了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2020-06-26
    • 2019-10-23
    相关资源
    最近更新 更多