我正在使用以下代码创建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,包名),请确保你包含了这里指定的范围。