将权重值保存到谷歌健身时"Application needs OAuth consent from the User"



我正在使用以下代码创建GoogleApiClient实例:

    // Create the Google API Client
    mClient = new GoogleApiClient.Builder(act)
        .addApi(Fitness.HISTORY_API)
        .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
        .addConnectionCallbacks(this)
        .enableAutoManage(act, 0, this)
        .build();

创建客户端后,手机会显示帐户选择对话框,然后显示OAuth授权对话框。之后,活动通过以下方法获得结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.i(TAG, "Result received");
    authInProgress = false;
    gf.connect();
}

在日志中,我可以看到授权过程正在运行,但当尝试保存到Google Fit时,使用以下代码:

    Calendar calendar = Calendar.getInstance();
    Date now = new Date();
    calendar.setTime(now);
    long date = calendar.getTimeInMillis();
    DataSource dataSource = new DataSource.Builder().
            setAppPackageName(activity).
            setDataType(dataType).
            setType(DataSource.TYPE_RAW).
            build();
    DataSet dataSet = DataSet.create(dataSource);
    DataPoint dataPoint = dataSet.
            createDataPoint().
            setTimestamp(date, TimeUnit.MILLISECONDS);
    dataPoint.
            getValue(field).
            setFloat(value);
    dataSet.add(dataPoint);
    Fitness.HistoryApi.insertData(mClient, dataSet).setResultCallback(cb);

我看到以下错误:

应用程序需要用户的OAuth同意

我错过了什么?OAuth凭据已在Google控制台中创建。

初始化mClient时应该添加更多的Scope:示例:

mClient = new GoogleApiClient.Builder(act)
    .addApi(Fitness.HISTORY_API)
    .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addScope(new Scope(Scopes.FITNESS_NUTRITION_READ))

更多取决于您想要获取数据的值。

如果你是Google开发者控制台不是问题所在(API密钥,Oauth,包名),请确保你包含了这里指定的范围。

相关内容

最新更新