Answer the question
In order to leave comments, you need to log in
How to display data on page from API?
Tell me how to display the data on the steps page from the received response?
const express = require("express")
const app = express()
const port = 1234
const {google} = require("googleapis")
const request = require("request")
const cors = require("cors")
const urlParse = require("url-parse")
const queryParse = require("query-string")
const bodyParser = require("body-parser")
const axios = require("axios")
const { response } = require("express")
const path = require("path")
// APP
app.use(cors())
app.use(bodyParser.urlencoded({ extended: true}))
app.use(bodyParser.json())
app.get("/", (req, res) => {
res.sendFile(path.resolve(__dirname, 'static', 'index.html'))
})
app.get("/getURL", (req, res) => {
const oauth2Client = new google.auth.OAuth2(
// client id
"48888888888888888s0.apps.googleusercontent.com",
// client secret
"yv888888888888888888888niZ3",
// link to redirect
"http://localhost:1234/steps"
)
const scopes = [ "https://www.googleapis.com/auth/fitness.activity.read profile email openid" ]
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("/steps", async (req, res) => {
const queryURL = new urlParse(req.url)
const code = queryParse.parse(queryURL.query).code
const oauth2Client = new google.auth.OAuth2(
// client id
"4718888888888888888888.apps.googleusercontent.com",
// client secret
"yvyzz98888888888888niZ3",
// link to redirect
"http://localhost:1234/steps"
)
const tokens = await oauth2Client.getToken(code)
let stepArray = []
try {
const result = await axios({
method: "POST",
headers: {
authorization: "Bearer " + tokens.tokens.access_token,
},
"Content-Type": "application/json",
url: `https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate`,
data: {
aggregateBy: [
{
dataTypeName: "com.google.step_count.delta",
dataSourceId:
"derived:com.google.step_count.delta:com.google.android.gms:estimated_steps",
},
],
bucketByTime: { durationMillis: 86400000 },
startTimeMillis: Date.now() - 30 * 86400000,
endTimeMillis: Date.now(),
},
});
stepArray = result.data.bucket
} catch (e) {
console.log(e)
}
try {
for (const dataSet of stepArray){
// console.log(dataSet)
for (const points of dataSet.dataset) {
// console.log(points)
for (const steps of points.point) {
console.log(steps.value)
}
}
}
} catch (e) {
console.log(e)
}
res.sendFile(path.resolve(__dirname, 'static', 'steps.html'))
})
app.get
app.listen(port, () => console.log('GFit ready to running on port: 1234'))
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question