首页 > 解决方案 > 用于计步的 Google Fit APi 授予第一次用户拒绝的权限

问题描述

我开发了一个应用程序,它可以从 google fit 同步用户步数。我观察到,一旦在移动设备中安装了 google fit 应用程序就会同步的用户和尚未安装该应用程序的用户会收到以下错误

{ "error": { "code": 403, "message": "datasource not found or not readable: derived:com.google.step_count.delta:com.google.android.gms:estimated_steps", "errors": [ {“消息”:“数据源未找到或不可读:派生:com.google.step_count.delta:com.google.android.gms:estimated_steps”,“域”:“全局”,“原因”:“禁止”} ], "状态": "PERMISSION_DENIED" } }

当他们重新安装应用程序时,它工作正常

如果他们在第二天同步,它将起作用

这是代码:

const timeGap = {
    endTimeMillis: new Date().getTime() + 1 * 60 * 60 * 1000,
    startTimeMillis: new Date('2021-01-01 00:00').getTime(),
};
return gapi.client.fitness.users.dataset
  .aggregate({
    userId: 'me',
    resource: {
      aggregateBy: [
        {
          dataTypeName: 'com.google.step_count.delta',
          dataSourceId:
            'derived:com.google.step_count.delta:com.google.android.gms:estimated_steps',
        },
      ],
      endTimeMillis: timeGap.endTimeMillis,
      startTimeMillis: timeGap.startTimeMillis,
      bucketByTime: {
        durationMillis: 86400000,
      },
    },
  })
  .then(
    (response) => {
      console.log('[[[[[', response);
      const stepVals = [];

      console.log(response);
      observer.next(response.result);
      observer.complete();
    },
    (err: any) => {
      observer.error(err);
      observer.next(err);

      // console.error("ERRRR", err);
      observer.complete();
    }
  );

标签: google-fit

解决方案


找不到数据源...

在用户将数据同步到服务器之前,您尝试读取的 DataSource 将不存在。

将此错误解释为 是合理的NOT_FOUND


推荐阅读