with Hyros and Google Identity?
The Hyros API offers the ability to track and analyze customer interactions across various marketing channels, aiming to improve ad tracking and ROI. Integrated within Pipedream, it allows for the automation of data collection, real-time analytics, and operational workflows. By leveraging Pipedream's serverless platform, developers can create workflows that respond to events from Hyros, trigger actions based on data insights, or synchronize data with other apps seamlessly.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
hyros: {
type: "app",
app: "hyros",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.hyros.com/v1/api/v1.0/user-info`,
headers: {
"API-Key": `${this.hyros.$auth.api_key}`,
},
})
},
})
import axios from "axios";
import * as jsrsasign from "jsrsasign";
export default defineComponent({
props: {
google_identity: {
type: "app",
app: "google_identity",
}
},
async run({ steps, $ }) {
const serviceAccountKey = JSON.parse(this.google_identity.$auth.service_account_key);
const GOOGLE_OAUTH = 'https://www.googleapis.com/oauth2/v4/token';
// add/remove your own scopes as needed
const SCOPES = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/cloud-identity',
];
const getJwt = async function ({ client_email, private_key }, iat) {
const header = {
typ: 'JWT',
alg: 'RS256',
};
const exp = iat + 3600;
const payload = {
aud: GOOGLE_OAUTH,
iss: client_email,
scope: SCOPES.join(' '),
iat,
exp,
};
const jwt = jsrsasign.KJUR.jws.JWS.sign(null, header, payload, private_key);
return { jwt, exp };
};
const getToken = async function (serviceAccountKey) {
const now = Math.floor(Date.now() / 1000);
const jwtInfo = await getJwt(serviceAccountKey, now);
const params = new URLSearchParams();
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:jwt-bearer');
params.append('assertion', jwtInfo.jwt);
const response = await axios.post(GOOGLE_OAUTH, params, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const accessToken = response.data.access_token;
return accessToken;
};
const generateOAuthToken = async function () {
return await getToken(serviceAccountKey);
};
// Call the function to generate the token
const accessToken = await generateOAuthToken();
// Call the Google Identity API to search for groups
const response = await axios({
method: "GET",
url: "https://cloudidentity.googleapis.com/v1/groups:search",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json"
},
params: {
query: "parent == 'customers/C046psxkn'"
}
})
return response.data
},
})