如何禁用Google健身并从应用程序本身撤销权限

我已经安装了连接到Google健身的应用,读取和写入一些关于用户身体的数据。 当用户在应用设置中禁用Google健身时,我尝试通过调用以下命令来撤销应用的权限:

public void disableGoogleFit(){ if(!mClient.isConnected()){ Log.e(TAG, "Google Fit wasn't connected"); return; } PendingResult<Status> pendingResult = Fitness.ConfigApi.disableFit(mClient); pendingResult.setResultCallback(new ResultCallback<Status>() { @Override public void onResult(Status status) { if(status.isSuccess()) { Log.i(TAG, "Google Fit disabled"); }else{ Log.e(TAG, "Google Fit wasn't disabled " + status); } } }); } 

即使我可以成功读取/写入数据,禁用飞度返回错误:

 Google Fit wasn't disabled Status {statusCode=unknown status code: 5010, resolution=null} 

编辑1:添加完整的方法,其中可见,该客户端连接在我尝试禁用适合的时刻。

Solutions Collecting From Web of "如何禁用Google健身并从应用程序本身撤销权限"

我也面临类似的问题。

如果应用在Google开发者控制台中未正确注册,则会出现此问题。

我认为您已经在Google开发者控制台上使用生产密钥库证书指纹(SHA1)在应用程序上进行了testing,其中包含debugging密钥库。

执行以下步骤:

  1. 使用debugging密钥库证书指纹(SHA1)创build另一个客户端ID。
  2. 卸载现有的应用程序。
  3. 安装应用并连接到Google fit。
  4. 检查谷歌适合的应用程序,并确保您的应用程序被列为一个连接的应用程序(…>设置>连接的应用程序>连接的应用程序和设备)。
  5. 现在运行上面的代码,它会工作!

我遇到了这个问题,如果我撤销了Google Fit的访问权限,而不是调用disableFit()方法。 当使用disableFit()方法时,事情已经断开连接,重新连接是一个蛋糕散步。 但是,当谷歌飞度撤销访问它并没有消除现有的OAuth,所以你陷入了僵局。 林波是你断开,但没有OAuth的挑战发出,所以你不断收到5010错误。

我提出的唯一解决scheme就是通过连接到另一个帐户来进行OAuth挑战。 那你还好吧 这听起来像是Google Fit上的一个问题,但在客户端却没有任何问题。

根据Android开发者论坛

https://developer.android.com/reference/com/google/android/gms/fitness/ConfigApi.html

公共静态最终诠释APP_NOT_FIT_ENABLED

状态代码表示在Google健身中连接的应用程序列表中找不到应用程序。 表示对应用程序的访问已被撤销,或者应用程序未在开发者控制台上注册。

常量值:5010(0x00001392)

并呼叫一个disableFit客户端必须在通话时连接

 public abstract PendingResult<Status> disableFit (GoogleApiClient client) 

禁用Google适合应用程序。 可用于从应用程序中撤消所有授予的OAuth访问权限,从而删除应用程序的所有现有订阅和注册。

参数

客户端是一个现有的GoogleApiClient。 在这次通话时必须连接

禁用通话后

 mClient.disconnect(); 

哪个对我有用