Firebase Admin SDK에서 하루의 Authentication 사용자 수를 집계했습니다 (최대 5 배).
16750 단어 Firebase독서적독웹 서비스FirebaseAuth
Qiita 기사을 쓴 결과, 많은 분들이 등록자를 주었습니다
제대로 측정하고 싶다고 생각하면 Firebase Admin SDK을 사용하면,
Firebase Auth 등록일로부터 매일 사용자 수를 집계 할 수 있기 때문에 시도했습니다!
할 수있는 그래프는 여기
이런 그래프를 내고 싶었는데...
덧붙여서, 이전 기사을 쓴 것이 8/14로, 하루 트렌드가 8/16이므로, 약 5배... 기쁘다...
단지, INTERNET Watch씨나 nabettu씨에게도 소개해 주셨으므로, 순수한 숫자는 아니다...
이 그래프를 내기 위해서는 이런 CSV를 원합니다 ...
日付
와 その日の登録ユーザ数
의 두 열의 데이터가 있다면,2019-08-11 3
2019-08-12 12
2019-08-13 46
2019-08-14 13
2019-08-15 38
2019-08-16 65
2019-08-17 18
Google 스프레드 시트에서 그래프를 표시 할 수 있으므로,
우선, 이것이 내고 싶다고. . (´ω`)
사용자 수를 매일 집계하는 소스
Firebase Auth 사용자 목록을 검색하고 집계하고,
console.log()
로 출력하는 소스입니다!!로컬 PC에서 firebase-admin을 사용할 때의 초기 설정이란?
- 로컬 PC에서 firebase-admin을 사용하여 Firestore 조작 (관리 도구) - 해파리가되고 싶다.
const dayjs = require("dayjs");
const admin = require("firebase-admin");
// 配置したサービスアカウントの秘密鍵を取得
const serviceAccount = require("./key/XXXXX.json");
// firebase-adminを初期化
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) });
// firestoreのインスタンスを取得
const db = admin.firestore();
/**
* Firebase Authからユーザの一覧を取得する関数。
* 最大1000件の取得条件があるので、再起で呼び出す
*/
async function listAllUsers(users = [], nextPageToken) {
try {
const res = await auth.listUsers(1000, nextPageToken);
res.users.forEach(userRecord => users.push(userRecord.toJSON()));
if (res.pageToken) await listAllUsers(users, res.pageToken);
} catch (error) {
console.log("Error listing users:", error);
}
return users;
}
// ****************************
// * MAIN
// ****************************
async function main() {
console.log(`***** START MAIN`);
// Firebase Authのユーザ数を取得
const users = await listAllUsers();
// 日付ごとに集計
const summary = {};
users.forEach(userRecord => {
const creationTime = userRecord.metadata.creationTime;
const createAt = dayjs(creationTime).format("YYYY-MM-DD");
if (createAt in summary) summary[createAt] = summary[createAt] + 1;
else summary[createAt] = 1;
});
// 集計結果を出力
Object.entries(summary)
.sort((a, b) => dayjs(a[0]).diff(dayjs(b[0]))) // 日付の昇順にソート
.forEach(([key, val]) => console.log(`${key},${val}`)); // 書き出し
console.log(`***** END MAIN`);
process.exit(0); // プロセスが終了しない時があるので、exitしてます...
}
main().then();
내용적으로는 간단하고,
1. Firebase Auth에서 사용자 목록을 가져옵니다.
2. 날짜별 집계
3. 집계한 결과를 CSV 형식으로 출력
또한 날짜 계산은 dayjs을 사용합니다.
필요한 경우
npm install dayjs --save
등으로 설치하십시오!Firebase Auth에서 이런 정보를 얻을 수 있습니다.
res.users.forEach(userRecord => users.push(userRecord.toJSON()));
의
userRecord.toJSON()
부분에서 이러한 정보를 얻을 수 있습니다.{
"uid": "....",
"email": undefined,
"emailVerified": false,
"displayName": "めもらば@公式",
"photoURL": "https://xxxxxx.png",
"phoneNumber": undefined,
"disabled": false,
"metadata": {
"lastSignInTime": "Tue, 06 Aug 2019 08:46:10 GMT",
"creationTime": "Mon, 22 Jul 2019 16:24:06 GMT"
},
"passwordHash": undefined,
"passwordSalt": undefined,
"customClaims": undefined,
"tokensValidAfterTime": "Mon, 22 Jul 2019 16:24:06 GMT",
"providerData": [
{
"uid": "xxxxxx",
"displayName": "めもらば@公式",
"email": "[email protected]",
"photoURL": "https://xxxx.png",
"providerId": "twitter.com",
"phoneNumber": undefined
}
]
}
여러가지 할 수 있으므로, 유저 관리용으로 스크립트등을 준비해 두는 것도 좋을 것 같아(´ω`)
결론
아래 기사에서도 썼지만 firebase-admin 편리 ... ヽ (=´▽`=)ノ
- 로컬 PC에서 firebase-admin을 사용하여 일괄 삭제 / 일괄 업데이트 - Qiita
덧붙여서, 계측한 대상의 서비스는 이쪽입니다♪
적독 총액 랭킹이나 인기의 책 등도 있으므로, 좋으면 어쩌면 받을 수 있으면!!
쌓은 책의 총액을 알 수 있는 독서 관리 서비스
적독 하우 매치
참고로 한 사이트
Reference
이 문제에 관하여(Firebase Admin SDK에서 하루의 Authentication 사용자 수를 집계했습니다 (최대 5 배).), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kira_puka/items/553180413bfbf0b93007텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)