Плагин Ioni c Health не может подключиться к Google Fit - PullRequest
1 голос
/ 06 мая 2020

Я использую Ioni c React для создания приложения, которое передает данные о физической форме пользователя с помощью плагина ioni c Cordova health, но, похоже, не работает.

import { Health } from "@ionic-native/health/ngx";


const Tab1: React.FC = () => {
  let health = new Health();
  const healtChanger = () => {
        health.isAvailable()
        .then((available:boolean) => {
          console.log(health.isAuthorized(['steps']));
      if(health.isAuthorized(['steps']))
      {
        console.log("Already Authorised");
        health.queryAggregated({
          startDate: new Date(new Date().getTime() - 3 * 24 * 60 * 60 * 1000), // three days ago
          endDate: new Date(), // now
          dataType: 'steps',
          bucket: 'day'
        })
        .then(res => console.log(res))
        .catch(e => console.log(e));
      }
      else {
        health.requestAuthorization([
          'distance', 'nutrition',  //read and write permissions
          {
            read: ['steps'],       //read only permission
          }
        ])
        .then(res => console.log(res))
        .catch(e => console.log(e));
      }
    })
    .catch(e => console.log(e)); 
  };

Код, похоже, имеет авторизацию, но когда я пытаюсь выполнить, он выдает ошибку cannot connect to google fit. Вывод команды chrome inspect для устройства android выглядит следующим образом:

main.871c1aec.chunk.js:1 Promise {<pending>}
main.871c1aec.chunk.js:1 Already Authorised
main.871c1aec.chunk.js:1 Cannot connect to Google Fit

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 07 мая 2020

Прежде чем запрашивать доступ к данным о пригодности пользователя из приложения Google fit, вам необходимо получить свой sha1-ключ вашего debug. keystore авторизованного на странице API Google fit и сгенерировать экран 0auth для запроса доступа. Чтобы получить доступ к api и ключ Shaq, посетите эту страницу Google fit и следуйте инструкциям, как показано. После того, как вы авторизовали свой ключ sha1 и имя пакета для получения доступа, теперь вы можете удалить папку ur android из своего проекта, повторно добавить ее и перестроить apk из студии Android, и после развертывания на своем устройстве вы будете будет запрошен правильный доступ к экрану Auth для предоставления доступа, и вы сможете увидеть данные для него.

requestAuthorization() метод должен быть вызван перед использованием методов запроса и хранения, даже если авторизация уже была предоставлена ​​в какой-то момент в прошлом. если мы не назовем их раньше, это может привести к тому, что приложение cra sh и Google fit выдаст ошибку cannot connect to google fit.

В вашем коде внутри оператора if вам нужно вызвать requestAuthorization() перед health.queryAggregated or health.query : -

    if (health.isAuthorized(["steps"])) {
          console.log("Already Authorised");
          health.requestAuthorization([
              "distance",
              "nutrition", 
              {
                read: ["steps", "height", "weight"], 
                write: ["height", "weight"], 
              },
            ])
            .then((res) => console.log("response " + res))
            .catch((e) => console.log("error " + e));

          health.queryAggregated({
              startDate: new Date(new Date().getTime() - 3 * 24 * 60 * 60 * 1000), 
              endDate: new Date(), // now
              dataType: 'steps',
              bucket: 'day'
            })
            .then(res => console.log(res))
            .catch(e => console.log(e));
        } else {
          health
            .requestAuthorization([
              "distance",
              "nutrition", 
              {
                read: ["steps"], 
                write: ["height", "weight"], 
              },
            ])
            .then((res) => console.log(res))
            .catch((e) => console.log(e));
        }
      })
      .catch((e) => console.log(e));
  };
...