我一直在使用google fit,并且在撤消我以前被授予的权限时遇到问题。
这是我检查是否已授予权限的方法,如果没有则请求权限。
private val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_WEIGHT, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_WEIGHT_SUMMARY, FitnessOptions.ACCESS_READ)
.build()
val account : GoogleSignInAccount = GoogleSignIn.getAccountForExtension(activity, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
activity,
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
account,
fitnessOptions)
}
This页面讨论了使用ConfigClient.disableFit断开连接,但似乎不起作用。
This线程对问题的描述非常好,注释也与我尝试过的一些东西类似。解决方案不起作用,我得到与krokyze相同的错误。我可以使用GoogleSignInClient.signOut注销用户,但是如果我再次登录同一帐户,则仍然会授予权限。
通过GoogleFit应用程序断开我的应用程序的连接似乎可行,但是要求用户以这种方式进行操作并不是很好的UX。我也遇到了一些同步问题。我会断开该应用程序的连接,重新连接并获得许可,但是我的应用程序很长时间不会出现在GoogleFit的已连接应用程序列表中。
答案 0 :(得分:0)
要撤消权限,可以使用以下方法
val options = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.addExtension(getFitnessOptions())
.requestProfile()
.build()
GoogleSignIn.getClient(this, options).revokeAccess()