Jacob Wenger
ソフトウェア エンジニア
継続的にフィードバックをお寄せいただいているおかげで、
JavaScript SDK のバージョン 3.1.0 で Firebase の React Native サポートが強化されました。それだけではありません。このバージョンでは、Node.js SDK からの認証されていないアクセスも追加されているため、サービス アカウントなしにアプリを初期化できるようになっています。これにはどのような意味があるのでしょうか。詳しく見ていきましょう。
React Native のサポート
Google I/O で Firebase 3.x SDK がリリースされた際、SDK の認証部分は React Native と互換性がなくなっていました。リリース 3.1.0 では、ブラウザ固有の API を置き換えることによって、再び Firebase に React Native との互換性を持たせています。さらに、アプリの再起動をまたぐ認証状態の永続化など、React Native で Firebase を使用する際に問題となってきた点が修正されています。これによって、その他の JavaScript アプリと同様、Firebase プロジェクトを初期化するだけでよくなります。
import ReactNative from "react-native";
import firebase from "firebase";
// Initialize Firebase
const firebaseConfig = {
apiKey: "<YOUR-API-KEY>",
authDomain: "<YOUR-AUTH-DOMAIN>",
databaseURL: "<YOUR-DATABASE-URL>",
storageBucket: "<YOUR-STORAGE-BUCKET>"
};
firebase.initializeApp(firebaseConfig);
3.1.0 SDK のアップデートでは、React Native でほぼすべての JavaScript SDK の機能がスムーズに動作するようになっています。ただし、いくつかの注意点があります。
-
signInWithPopup()
、signInWithRedirect()
、linkWithPopup()
、linkWithRedirect()
などの「ヘッドフル」な認証メソッドは、React Native では動作しません(この点は Cordova でも同様です)。ただし、signInWithCredential()
と任意のプロバイダからの OAuth トークンを利用することで、フェデレーションに対応したプロバイダにログインしたり、リンクすることができます。
-
React Native は File や Blob タイプをサポートしていないので、この環境では Firebase Storage へのアップロードは動作しません。ファイルのダウンロードは問題なく動作します。
未認証アクセス
リリース 3.1.0 のもう 1 つの特徴は、Node.js SDK で未認証アクセスがサポートされていることです。以前は、Node.js SDK を利用するにはサービス アカウントが必須でした。そのため、Firebase Console でのサービス アカウント キーの作成、サーバーへのダウンロード、コードからファイルを参照して認証、という作業を行う必要がありました。トークンの作成や検証には依然としてサービス アカウントが必要ですが、Node.js のユースケースによっては、サービス アカウントを使わないで済むこともあります。最新の SDK では、この要件を緩和してデータベース URL だけでアプリを初期化できるようにしています。
import firebase from "firebase";
firebase.initializeApp({
databaseURL: "<YOUR-DATABASE-URL>",
});
サービス アカウントがない場合、他の未認証クライアントと同様に Realtime Database へのアクセスは制限されます。
フィードバックをお待ちしています
Slack のチームや Google Group、その他のサポート窓口より意見をお寄せいただき、ありがとうございました。新しい SDK で何か問題が発生した場合は、
こちらからご連絡ください。React Native や Firebase に関して皆さまからのご意見をお待ちしています。
Posted by
Yoshifumi Yamaguchi - Developer Relations Team