Firebase を使って特定期間内の Twitter ログインユーザー数を抽出

最近、Twitter の仕様変更により、アプリケーションにおける Twitter 連携が使用不可になる事象が発生しています。このため、当該アプリケーションの運用者は、Twitter アカウントを利用しているユーザーがどの程度いるのかを調査したいと考える方も多いのではないでしょうか。本記事では、Firebase Authentication を使用したアプリケーションにおいて、特定期間内に Twitter アカウントでログインしたユーザー数を抽出する方法を解説します。

環境設定

Firebase Admin SDK のインストール

Python に対応した Firebase Admin SDK をインストールするために、以下のコマンドを実行します。

pip install firebase-admin

Firebase の設定情報の取得

  • Firebase コンソールにログインし、対象のプロジェクトを選択します。
  • 左側のメニューから「設定」アイコンをクリックし、「プロジェクトの設定」を選択します。
  • 「サービスアカウント」タブに移動し、「新しい秘密鍵の生成」ボタンをクリックします。これにより、サービスアカウントキーの JSON ファイルがダウンロードされます。
  • ダウンロードした JSON ファイルを、Python スクリプトと同じディレクトリに配置します。
  • Python スクリプト内で、以下のように Firebase Admin SDK を初期化し、ダウンロードしたサービスアカウントキーを使用します。
from firebase_admin import credentials
from firebase_admin import initialize_app

cred = credentials.Certificate("path/to/serviceAccountKey.json")
firebase_admin.initialize_app(cred)

Python スクリプトの作成

コードの説明

以下の Python スクリプトは、Firebase Authentication から特定期間内に Twitter アカウントでログインしたユーザー数を抽出し、ユーザー ID とスクリーンネームをテキストファイルに保存します。

# ----------------------------------------------------------------------------
# Author: tomo
# Creation Date: 2023-04-13
#
# This script is free to use and modify at your own discretion.
# No warranty is provided for the script's functionality.
# Use this script at your own risk.
# ----------------------------------------------------------------------------
import firebase_admin
from firebase_admin import credentials, auth
from datetime import datetime, timedelta

# Initialize the Firebase Admin SDK
cred = credentials.Certificate('path/to/your-service-account-key.json')
firebase_admin.initialize_app(cred)

# Set the time range
start_date = datetime(2023, 1, 1)
end_date = datetime(2023, 4, 13)

# Get all users from Firebase Authentication
users = []
page = auth.list_users()
while page:
    users += page.users
    page = page.get_next_page()

# Filter users who logged in using Twitter and within the specified time range
twitter_users = []
for user in users:
    if user.provider_data and 'twitter.com' in user.provider_data[0].provider_id:
        last_login = datetime.fromtimestamp(user.user_metadata.last_sign_in_timestamp / 1000)
        if start_date <= last_login <= end_date:
            screen_name = user.provider_data[0].display_name
            user_id = user.uid
            twitter_users.append[1]user_id, screen_name # Save the Twitter users' data to a text file
with open('twitter_users.txt', 'w') as f:
    for user_id, screen_name in twitter_users:
        f.write(f"{user_id}: {screen_name}\n")

print(f"Number of Twitter users during the specified period: {len(twitter_users)}")

期間の設定

このスクリプトでは、start_dateend_date によってログインユーザーの抽出期間を指定しています。日付を変更することで、別の期間のログインユーザーを抽出できます。

Twitter ログインユーザーの抽出

スクリプトは、ログイン情報を含むユーザーを一度に最大 1000 件取得できる list_users 関数を利用しています。ユーザーが 1000 件以上いる場合、ページネーションを利用して次の 1000 件のユーザー情報にアクセスします。指定期間内に Twitter アカウントでログインしたユーザーの ID とスクリーンネームがテキストファイルに保存されます。

実行結果の確認

コードの実行

Python スクリプトを実行するには、ターミナルまたはコマンドプロンプトでスクリプトが保存されているディレクトリに移動し、python script_name.py(script_name はスクリプトのファイル名)と入力して実行します。実行が完了すると、指定したテキストファイルに結果が保存されます。

結果の解釈

出力されたテキストファイルを開くことで、特定期間内に Twitter アカウントでログインしたユーザーの ID とスクリーンネームが一覧で確認できます。これにより、アプリケーションでの Twitter ログインの利用状況を把握できます。

まとめ

抽出したユーザー数を活用することで、Twitter の仕様変更がアプリケーションに与える影響を評価できます。また、ユーザーに対して情報提供や連絡が必要な場合、抽出したスクリーンネームを利用して対象ユーザーにアプローチできます。

以上



脚注

脚注
1user_id, screen_name