저번에 말한 '내 웹사이트 방문자 수 보여주기' 기능을 드디어 성공했다.
사실 이때까지 혼자서 끙끙 대다가, 친구에게 이런이런 거로 막혀서 요즘 고민이다라고 털어놓았더니 "http 라이브러리나 cookie에 관련된 거를 검색해봐"라고 답변이 돌아왔다. 결국 이런 것들을 검색하다가 해결을 하였다. 역시 내 분야의 선배가 이렇게 던져주는 keyword 하나하나가 정말 귀하다.
이제는 이렇게 방문자 수가 보여진다.
(참고로 나는 방문자 수, 세션 수, 페이지 뷰 수 이렇게 3가지 정보를 받아와서 페이지 뷰 수를 보여주고 있다.)
자 그럼 어떻게 해야 이 기능을 얻었는지 설명 시작한다.
🎇1~3번은 구글링하면 아주 잘 설명한 블로그들이 많아서 거기들을 참고바란다!!🎇
// npm install react-ga --save 를 먼저 실행해서 라이브러리 설치.
import ReactGA from "react-ga";
function App() {
useEffect(() => {
ReactGA.initialize("UA-*********-1");
ReactGA.set({ page: window.location.pathname });
ReactGA.pageview(window.location.pathname + window.location.search);
}, []);
아주 갓갓인 사이트 https://ga-dev-tools.web.app/query-explorer/
내가 원하는 데이터들을 json 형태로 받을 수 있게 해준다.
만약 UA Query Explorer에 처음 들어가면 구글 analytic과 연결된 구글 계정으로 로그인 하라.
그러면 select View에 account를 누르면 내가 analytic에 연결한 홈페이지 정보가 자동으로 입력된다.
analytic 정보를 가져올 start date와 end date를 정할 수 있다.
날짜는 20XX-XX-XX식으로 쓰고, today, yesterday, 30daysAgo 등등 특정 기간으로 정할 수도 있다.
그리고 마지막으로 RUN QUERY를 누르면 밑에처럼 API Request 주소가 나온다. 그리고 밑에는 미리보는 데이터 정보들. 그런데 여기서 이 주소를 그냥 쓰면 안되고 include access token이라는 것을 클릭하고 그 url 주소를 사용해야한다.
저 url을 그냥 복사해서 주소창에 붙이고 엔터만 눌러도 원하는 데이터가 불러와진다.
그래서 사실 이 url로 http 통신을 통하여 데이터를 받으면 되는데, 여기서 문제가 있다.
저기서 발급받은 access token은 사실 1시간의 유효기간이 있음. 그래서 1시간 뒤에는 쓸모없는 url이 되는 거다!! 뚜둥
그렇다면 이 access token을 초기화해주면 되지 않을까?
그래서 필요한게 refresh token이다. 이 refresh token은 어떻게 얻냐하면...
자 이제 거의 다 왔다. https://developers.google.com/oauthplayground 로 접속
// npm install axios 먼저 실행해서 라이브러리 다운.
import axios from "axios";
async function Axios() {
try {
//응답 성공
const response = await axios.post(
"https://accounts.google.com/o/oauth2/token",
{
//보내고자 하는 데이터
client_id:
"OAuth client Id",
client_secret: "보안 비밀번호",
refresh_token: "OAuth 2 playground에서 받은 refresh token",
grant_type: "refresh_token",
}
);
const Access_Token = response.data.access_token;
const url =
"https://www.googleapis.com/analytics/v3/data/ga?access_token=" +
Access_Token +
"&ids=ga%3A265023678&dimensions=ga%3Adate&metrics=ga%3Ausers%2Cga%3Asessions%2Cga%3Apageviews&start-date=2022-04-16&end-date=today";
const res = await fetch(url);
const DATA = await res.json();
return DATA;
} catch (error) {
//응답 실패
console.error(error);
}
}
export default Axios;
밑에 코드를 실행시키면 내가 원하는 데이터들이 객체형태로 담겨서 나온다. 끝.