Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在NodeJS中使用google analytics api_Node.js_Express_Google Api_Google Analytics Api - Fatal编程技术网

Node.js 在NodeJS中使用google analytics api

Node.js 在NodeJS中使用google analytics api,node.js,express,google-api,google-analytics-api,Node.js,Express,Google Api,Google Analytics Api,我在youtube教程的帮助下设置了google analytics api。 我可以通过这部分代码获取我的数据的url app.get("/get-url",(req,res) => { const oauth2Client = new google.auth.OAuth2( "XXXX.apps.googleusercontent.com", "XXXX", "

我在youtube教程的帮助下设置了google analytics api。 我可以通过这部分代码获取我的数据的url

app.get("/get-url",(req,res) => {
    const oauth2Client = new google.auth.OAuth2(
        "XXXX.apps.googleusercontent.com",
        "XXXX",
        "http://127.0.0.1:3000/user/dashboard"
    );

    const scopes = ["https://www.googleapis.com/auth/analytics.readonly"]

    const url = oauth2Client.generateAuthUrl({
        access_type : "offline",
        scope : scopes,
        state : JSON.stringify({
            callbackUrl : req.body.callbackUrl,
            userID : req.body.userid
        })

    });

    request(url,(err,response,body) => {
        console.log("error" , err);
        console.log("statusCode", response && response.statusCode);
        res.send({url});
    });
});

app.get("/user/dashboard", async (req,res) => {
    const oauth2Client = new google.auth.OAuth2(
        "XXXXXX.apps.googleusercontent.com",
        "XXXXXX",
        "http://127.0.0.1:3000/user/dashboard"
    );

    const queryURL = new urlParse(req.url);

    const code = queryParse.parse(queryURL.query).code; 
    const tokens = await oauth2Client.getToken(code);

    try {
        const result = await axios({
            method : "POST",
            headers : {
                authorization : "Bearer " + tokens.tokens.access_token
            },
            "Content-Type" : "application/json",
            url : "https://analyticsreporting.googleapis.com/v4/reports:batchGet",
            data : {
                "reportRequests":
                [
                  {
                    "viewId": "XXXXX",
                    "dateRanges": [{"startDate": "7daysAgo", "endDate": "yesterday"}],
                    "metrics": [{"expression": "ga:bounceRate"}]
                  }
                ]
            }

        })

        bounceRate = result.data.reports[0].data.rows[0].metrics

    } catch (error) {
        console.log(error);
    }

    res.send(bounceRate);

})

我可以通过这部分代码查看我的数据

app.get("/get-url",(req,res) => {
    const oauth2Client = new google.auth.OAuth2(
        "XXXX.apps.googleusercontent.com",
        "XXXX",
        "http://127.0.0.1:3000/user/dashboard"
    );

    const scopes = ["https://www.googleapis.com/auth/analytics.readonly"]

    const url = oauth2Client.generateAuthUrl({
        access_type : "offline",
        scope : scopes,
        state : JSON.stringify({
            callbackUrl : req.body.callbackUrl,
            userID : req.body.userid
        })

    });

    request(url,(err,response,body) => {
        console.log("error" , err);
        console.log("statusCode", response && response.statusCode);
        res.send({url});
    });
});

app.get("/user/dashboard", async (req,res) => {
    const oauth2Client = new google.auth.OAuth2(
        "XXXXXX.apps.googleusercontent.com",
        "XXXXXX",
        "http://127.0.0.1:3000/user/dashboard"
    );

    const queryURL = new urlParse(req.url);

    const code = queryParse.parse(queryURL.query).code; 
    const tokens = await oauth2Client.getToken(code);

    try {
        const result = await axios({
            method : "POST",
            headers : {
                authorization : "Bearer " + tokens.tokens.access_token
            },
            "Content-Type" : "application/json",
            url : "https://analyticsreporting.googleapis.com/v4/reports:batchGet",
            data : {
                "reportRequests":
                [
                  {
                    "viewId": "XXXXX",
                    "dateRanges": [{"startDate": "7daysAgo", "endDate": "yesterday"}],
                    "metrics": [{"expression": "ga:bounceRate"}]
                  }
                ]
            }

        })

        bounceRate = result.data.reports[0].data.rows[0].metrics

    } catch (error) {
        console.log(error);
    }

    res.send(bounceRate);

})

但问题是,当我刷新页面时,服务器会给我错误并崩溃。 这是错误消息

throw new common_1.GaxiosError(`Request failed with status code ${translatedResponse.status}`, opts,translatedResponse);

我想做的是刷新页面时,我想查看我的数据。我不想首先向/get data url发出get请求。当我向/user/dashboard路由发出get请求时,我想显示它。我如何才能管理它?

您好,请不要在公共论坛上共享凭据。我建议您创建新的凭据并删除您在问题中共享的凭据,因为它们在编辑历史记录中仍然可见。