Unity
Firebase
OculusGo

OculusGoでFirebaseを使う (Authentication, RealtimeDatabase)

概要

Firebase Unity SDK は GooglePlay 開発者サービスに依存しており、OculusGo で利用することが出来ない。
しかし、REST API を利用することで OculusGo でも Firebase が利用可能である。

この記事では、OculusGo から Authentication と RealtimeDatabase を使う方法をまとめる。
(ソースコードで Debug.Log を使っているが、実機での検証も済んでいる)

前準備

Firebase でプロジェクトを作って、Authentication と RealtimeDatabase を有効にしておく。
プラットフォームは web を選択して、APIキーと RealtimeDatabase の URL を取得しておく。

Authentication

Firebase Auth REST API  |  Firebase にある API を利用。
例えば、Email と Psassword でサインインする場合は下記のようになる。

    void Start () {
        StartCoroutine(ExecAuth());
    }

    IEnumerator SignIn() {
        WWWForm form = new WWWForm();
        form.AddField("email", "a@example.com");
        form.AddField("password", "testtest");

        var url = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=[APIキー]";

        UnityWebRequest www = UnityWebRequest.Post(url, form);
        yield return www.SendWebRequest();

        if(www.isNetworkError || www.isHttpError) {
            Debug.Log("失敗");
            Debug.Log(www.responseCode);
            Debug.Log(www.error);
        } else {
            Debug.Log("成功");
            Debug.Log(www.responseCode);
            Debug.Log(www.downloadHandler.text);
        }
    }

RealtimeDatabase

Simple Firebase Unity (for Realtime-Database) - Asset Store を利用すると楽。
Firebaseのリファレンスは データの取得  |  Firebase あたりが参考になりそう。

    void Start ()
    {
        // 初期化
        var firebase = Firebase.CreateNew("https://[RealtimeDatabaseのURL].firebaseio.com/");

        // データ追加(Pushの第二引数はデータがJSONの場合はtrueにする)
        firebase.Child("OculusGo").Push("{ \"message\": \"Hello!\"}", true);

        // データ取得時のコールバック設定
        firebase.OnGetSuccess += GetOKHandler;
        firebase.OnGetFailed += GetFailHandler;

        // データ取得 (Childの第二引数をtrueにしないと親で設定したコールバックが走らない)
        firebase.Child("OculusGo", true).GetValue("print=pretty");
    }

    void GetOKHandler(Firebase sender, DataSnapshot snapshot)
    {
        Debug.Log("成功");
        Debug.Log(snapshot.RawJson);
    }

    void GetFailHandler(Firebase sender, FirebaseError err)
    {
        Debug.Log("失敗");
        Debug.Log(err.Message);
    }

まとめ

雑なコードとまともな解説が無くてごめんなさい。
ただ、OculusGo でも Firebase は使えるよという事を広めたかったので書きました。
もっと良い方法がありましたら是非コメントで教えて頂けると嬉しいです。

それにしても OculusGo はまだまだ記事が少ないですよね。
こんな感じな些細な記事でも良いので、もっと増えることを祈ってます🙏