通过 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));
    });