LoginSignup
13
7

More than 5 years have passed since last update.

OculusGoでFirebaseを使う (Authentication, RealtimeDatabase)

Last updated at Posted at 2018-12-15

概要

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

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

スライド作りました。
Firebase + UniVRM + OculusGo で VRM をランタイムロード - Speaker Deck

前準備

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

Authentication

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

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

    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 はまだまだ記事が少ないですよね。
こんな感じな些細な記事でも良いので、もっと増えることを祈ってます🙏

13
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7