我已经设置了连接到Google Fit的应用,可以读取和写入有关用户身体的一些数据.当用户在应用设置中停用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); } } }); }
即使我可以成功读取/写入数据,禁用Fit也会返回错误:
Google Fit wasn't disabled Status {statusCode=unkNown status code: 5010,resolution=null}
Edit1:添加了整个方法,其中可见,该客户端在我尝试禁用Fit时连接.
解决方法
如果我撤消了操作的Google Fit方面的访问而不是调用disableFit()方法,我遇到了这个问题.当使用disableFit()方法时,事情变得很糟糕,重新连接是一个蛋糕步行.但是当Google Fit撤销访问时,它并没有消除现有的OAuth,因此您陷入了困境. Limbo因为您已断开连接但未发出OAuth质询,因此您不断收到5010错误.
我想出的唯一解决方案是通过连接到另一个帐户来进行OAuth挑战.那你很好.这听起来像是Google Fit上的一个问题,而客户端则没有任何问题.