通过 Wix 获取功能使用 HTTPS 从 google 分析服务获取资源
Fetching resources from google analytics services using HTTPS by Wix fetch function
我应该如何使用 Wix-fetch 函数获取数据?
我遵循了这个 google analytics API tutorial,本教程使用 post 函数获取 JSON 数据,我使用 WIX 获取函数获取 JSON 文件,但是 return 对象未定义。
我错过了什么?
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 生成了 CODE
wixLocation.to("https://accounts.google.or/o/oauth2/auth?scope=https://www.googleapis.com/auth/analytics%20https://www.googleapis.com/auth/userinfo.email&redirect_uri=https://www.mydomain.or/ga/oauth2callback/&access_type=offline&response_type=code&client_id=XXXXXXXXXXXXXXXXXX")
我从回调中得到代码 URL
步骤 2
我将这段代码用于 HTTP postman 请求
步骤1和步骤2中的重定向URI如下(第二个):
第一步:
google开发者控制台客户端id中配置的redirect URI需要和URL完全匹配才能获得代码授权。
URL 应该按照您链接的教程中所示构建(如果您需要刷新令牌,可以添加 access_type=offline)
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/analytics&redirect_uri=<redirect_uri>&response_type=code&client_id=<client_id>
输入URL后,您将获得授权window。授权后,您将被重定向到您之前提供的 。您将在 URL 查询中找到作为第一个参数的代码。例如/?code= ...
由于访问令牌仅供 one-time 使用,如果您再次需要它,则必须获取新的 。
第二步(Postman查询示例):
如果您 access_token 正确并且想立即使用 WIX 检查。获取一个新的(如前所述,访问令牌被赋予一次)并设置代码如下:
import { fetch} from 'wix-fetch';
$w.onReady(function () {
const data = `grant_type=authorization_code&code=<your_authorization_code>&client_id=<your_client_id>&client_secret=<your_client_secret>&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));
});
我应该如何使用 Wix-fetch 函数获取数据?
我遵循了这个 google analytics API tutorial,本教程使用 post 函数获取 JSON 数据,我使用 WIX 获取函数获取 JSON 文件,但是 return 对象未定义。 我错过了什么?
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 生成了 CODE
wixLocation.to("https://accounts.google.or/o/oauth2/auth?scope=https://www.googleapis.com/auth/analytics%20https://www.googleapis.com/auth/userinfo.email&redirect_uri=https://www.mydomain.or/ga/oauth2callback/&access_type=offline&response_type=code&client_id=XXXXXXXXXXXXXXXXXX")
我从回调中得到代码 URL
步骤 2 我将这段代码用于 HTTP postman 请求
步骤1和步骤2中的重定向URI如下(第二个):
第一步:
google开发者控制台客户端id中配置的redirect URI需要和URL完全匹配才能获得代码授权。
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/analytics&redirect_uri=<redirect_uri>&response_type=code&client_id=<client_id>
输入URL后,您将获得授权window。授权后,您将被重定向到您之前提供的
由于访问令牌仅供 one-time 使用,如果您再次需要它,则必须获取新的
第二步(Postman查询示例):
如果您 access_token 正确并且想立即使用 WIX 检查。获取一个新的
import { fetch} from 'wix-fetch';
$w.onReady(function () {
const data = `grant_type=authorization_code&code=<your_authorization_code>&client_id=<your_client_id>&client_secret=<your_client_secret>&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));
});