🌟

Firebase Authenticationのユーザー情報にRubyからアクセスする

1 min read

Firebase Authenticationを使って登録したユーザー情報にプログラムからアクセスするためには、
管理者権限でFirebaseを操作することができるFirebase Admin SDKが必要です。

Firebase Admin SDKではユーザー管理以外にも可能な機能が沢山あるので、
気になる方は以下の公式ドキュメントを参照ください。

https://firebase.google.com/docs/admin/setup?hl=ja

RubyはFirbase Admin SDKで未対応

Node.js、Java、Python、Go、C#は公式のSDKが対応していますが、
Rubyは残念ながらサポート対象外です。

google-apis-identitytoolkit_v3を使う

そのため代わりのgemとして、google-apis-identitytoolkit_v3を使います。

これは「Google Identity Toolkit API V3」のRESTクライアントのRubyライブラリです。

Githubの元リポジトリはこちらです。

https://github.com/googleapis/google-api-ruby-client

複数のAPIに対応しており、gemの名前は以下の命名規則になっています。

google-apis-<servicename>_<serviceversion>

ライブラリのインストール

gem 'google-apis-identitytoolkit_v3'

認証

環境変数を利用する場合

client = Google::Apis::IdentitytoolkitV3::IdentityToolkitService.new
client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(scope: 'https://www.googleapis.com/auth/identitytoolkit')
GOOGLE_ACCOUNT_TYPE
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_EMAIL
GOOGLE_PRIVATE_KEY
  • 上記の環境変数にサービスアカウントの認証情報を設定します。

APIの利用

ユーザー情報の取得

request = Google::Apis::IdentitytoolkitV3::GetAccountInfoRequest.new(local_id: [uid])
response = client.get_account_info(request)
return response.users[0]

ユーザー情報の作成

request = Google::Apis::IdentitytoolkitV3::SignupNewUserRequest.new(email: email, password: password)
response = client.signup_new_user(request)

Firebase Authenticationではemailは空のバリデーションがかかりますが、パスワードは空でも登録できてしまうので、
事前にガードを入れておいた方が良いでしょう。

こんな感じでRubyでもFirebase Adminを扱うことができます。

早く公式対応してくれると嬉しいですね。