#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 с локального хоста, а не используете свой домен?