如何从应用程序本身禁用Google Fit并撤消权限

时间:2014-11-25 15:39:16

标签: android google-fit

我已经设置了连接到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}

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

6 个答案:

答案 0 :(得分:3)

如果我撤消了操作的Google Fit方面的访问权限而不是调用disableFit()方法,那么我遇到了这个问题。当使用disableFit()方法时,事情已经断开连接,并且重新连接是一个蛋糕步行。但是当Google Fit撤销访问时,它并没有消除现有的OAuth,因此您陷入了困境。 Limbo因为您已断开连接但未发出OAuth质询,因此您不断收到5010错误。

我提出的唯一解决方案是通过连接到另一个帐户来进行OAuth挑战。那你很好。 这听起来像是Google Fit上的一个问题,而客户端则没有任何问题。

答案 1 :(得分:2)

我也面临类似的问题。

  

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

我认为您已使用生产密钥库证书指纹(SHA1)在Google开发人员控制台上注册了应用,您可以在具有调试密钥库的应用上对其进行测试。

执行以下步骤:

  1. 使用调试密钥库证书指纹(SHA1)再创建一个客户端ID。
  2. 卸载现有应用。
  3. 安装应用&amp;连接到Google fit。
  4. 检查google fit app&amp;确保您的应用列为已连接的应用(...&gt;设置&gt;已连接的应用&gt;已连接的应用和设备)。
  5. 现在运行上面的代码&amp;它会工作!!!

答案 2 :(得分:2)

目前使用15.0.1 lib可以轻松完成:

fun disconnect(context: Context) {
    val fitnessOptions = FitnessOptions.builder()
            .addDataType(DataType.TYPE_WORKOUT_EXERCISE, FitnessOptions.ACCESS_READ)
            .build()
    val signInOptions = GoogleSignInOptions.Builder().addExtension(fitnessOptions).build()
    val client = GoogleSignIn.getClient(context, signInOptions)
    client.revokeAccess()
}

答案 3 :(得分:1)

使用此

Fitness.getConfigClient(this,GoogleSignIn.getLastSignedInAccount(this))。disableFit()

Check here

答案 4 :(得分:0)

根据Android开发者论坛

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

  

public static final int APP_NOT_FIT_ENABLED

     

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

     

常数值:5010(0x00001392)

要拨打disableFit客户端必须在通话时连接

public abstract PendingResult<Status> disableFit (GoogleApiClient client)

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

<强>参数

  

客户端现有的GoogleApiClient。 必须在此时连接   这个电话

答案 5 :(得分:0)

停用来电后

mClient.disconnect();

哪个对我有用