🌟
Firebase Authenticationのユーザー情報にRubyからアクセスする
Firebase Authenticationを使って登録したユーザー情報にプログラムからアクセスするためには、
管理者権限でFirebaseを操作することができるFirebase Admin SDKが必要です。
Firebase Admin SDKではユーザー管理以外にも可能な機能が沢山あるので、
気になる方は以下の公式ドキュメントを参照ください。
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の元リポジトリはこちらです。
複数の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を扱うことができます。
早く公式対応してくれると嬉しいですね。
Discussion