目的
Flutter & Firebase を利用したBackendのAPIをRailsで作ってみる。
やったこと
Railsの初期セットアップ
bundle init して、生成された Gemfile の railsをコメントアウト
$ bundle config set path 'vendor/bundle' $ bundle install $ bundle exec rails new . --api $ echo vendor >> .gitignore $ git init $ git add . $ git commit -m "first commit" $ bundle exec rails s
DBのModelを作る
$ bundle exec rails g model members $ bundle exec rails migration
認証を作成
Flutter から Firebase で呼ばれるので、firebaseIDをSDKから取得する。
firebaseToken を検証するRubySDKはないので、こちらをそのまま利用。
RubyでFirebaseのidトークンを認証に使ってみる - Qiita
tokenの取得については、こちらを参考に実装。
【Rails】RailsでAPIの簡単なトークン認証を実装する - Qiita
def authenticate if ENV['DEBUG'].present? @firebase_id = DEBUG_FIREBASE_ID return end authenticate_or_request_with_http_token do |token, _| @firebase_id = _verify_id_token(token) end end
Flutter 側の呼び出しを作成
import 'package:firebase_auth/firebase_auth.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; Future<http.Response> getApi(String path) async { final token = await FirebaseAuth.instance.currentUser.getIdToken(); Map<String, String> headers = {'authorization': "Bearer $token"}; return await http.get("http://localhost:3000/$path", headers: headers); }