Извлечение ресурсов из служб Google Analytics с использованием HTTPS с помощью функции выборки Wix

#fetch #google-analytics-api #velo

#извлечение #google-analytics-api #velo

Вопрос:

Как я должен извлекать данные с помощью функции выборки Wix?

Я следовал этому руководству по API Google Analytics, в этом руководстве использовалась функция post для получения данных JSON, я использовал функцию выборки WIX для получения файла JSON, но возвращаемый объект не определен. Что я пропустил?

 fetch( "https://accounts.google.com/o/oauth2/token", {
  "method": "post",
  "headers": {
    "Content-Type": 'application/x-www-form-urlencoded'
  },
 'body' : JSON.stringify({
    'grant_type': 'authorization_code',
    'code': URLCode,
    'client_id': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com',
    'client_secret': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'redirect_uri': 'https://www.mydomain.or/ga/oauth2callback'
  })
} )
  .then( (httpResponse) => {
    if (httpResponse.ok) {
      return httpResponse.json();
    } else {
      return Promise.reject("Fetch did not succeed");
    }
  } )
  .then( (json) => console.log(json.someKey) )
  .catch(err => console.log(err));
  

Обновить

ШАГ 1 Я использовал этот URL для генерации КОДА

 wixLocation.to("https://accounts.google.or/o/oauth2/auth?scope=https://www.googleapis.com/auth/analytics https://www.googleapis.com/auth/userinfo.emailamp;redirect_uri=https://www.mydomain.or/ga/oauth2callback/amp;access_type=offlineamp;response_type=codeamp;client_id=XXXXXXXXXXXXXXXXXX")
  

Я получаю КОД из URL обратного вызова
введите описание изображения здесь

Шаг 2 Я использовал этот код для запроса HTTP postman

введите описание изображения здесь

URI перенаправления на этапах 1 и 2 выглядит следующим образом (второй): введите описание изображения здесь

Комментарии:

1. вы уверены, что используете правильную конечную точку? Попробуйте https://oauth2.googleapis.com/token и проверьте, что такое HttpResponse в консоли.

2. удалось ли вам получить токен доступа через Postman?

Ответ №1:

Шаг 1. Для получения авторизации кода должно быть точное совпадение между URI перенаправления, настроенным в идентификаторе клиента в консоли разработчиков Google, и URL-адресом. введите описание изображения здесьURL-адрес должен быть построен так, как показано в руководстве, на которое вы ссылались (если вам нужен токен обновления, вы можете добавить access_type=offline)

https://accounts.google.com/o/oauth2/auth ?scope=https://www.googleapis.com/auth/analyticsamp;redirect_uri=<redirect_uri>amp;response_type=codeamp;client_id=<client_id>

После ввода URL-адреса вам будет предоставлено окно авторизации. После авторизации вы будете перенаправлены на <redirect_uri>, который вы указали ранее. Вы найдете код в качестве первого параметра в запросе URL. например, <redirect_uri>/?code=<auth_code> …

Поскольку токен доступа предназначен только для одноразового использования, если он вам понадобится снова, вам придется получить новый <auth_code> .

Шаг 2 (пример запроса Postman): введите описание изображения здесь

Если вы правильно получили access_token и хотите проверить сейчас с помощью WIX. Получите новый <auth_code> (как уже говорилось, токен доступа предоставляется один раз) и задайте код следующим образом:

     import { fetch} from 'wix-fetch';
    
    $w.onReady(function () {
    
    const data = `grant_type=authorization_codeamp;code=<your_authorization_code>amp;client_id=<your_client_id>amp;client_secret=<your_client_secret>amp;redirect_uri=<your_redirect_uri>`;
    
    fetch("https://accounts.google.com/o/oauth2/token", {
    "method": "post",
    "headers": {
    "Content-Type": 'application/x-www-form-urlencoded'
    },
    'body': data
    })
    .then((httpResponse) => {
    if (httpResponse.ok) {
    return httpResponse.json();
    } else {
    
    return Promise.reject("Fetch did not succeed");
    }
    })
    .then((json) => console.log(json.access_token))
    .catch(err => console.log(err));
    });

  

введите описание изображения здесь

Комментарии:

1. Я добавил к URL-адресу «access_type= offline» и использовал ваш код с шага 2, но ничего не изменилось, вы что-то еще сделали?

2. удалось ли вам получить токен доступа с помощью Postman после шага 1?

3. Я не пытался получить токен доступа с помощью postman, я только попробовал Wix fetch

4. вы можете проверить здесь pasteboard.co/JyeIUMi.png если вы хотите сначала попробовать с Postman (я настоятельно рекомендую). кстати, я увидел, что между кодом и <your_authorization_code> отсутствует =, я исправил опечатку в редактировании.

5. Я изменил знак = при первой печати тела перед использованием: grant_type=authorization_codeamp;code=4/5wXXXXXXXXXXXXXamp;client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXamp;client_secret=XXXXXXXXXXXamp;redirect_uri=https://www.mydomain.or/ga/oauth2callback Почему вы используете redirect_uri с локального хоста, а не используете свой домен?