FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Parse ServerでGoogle/Sign in with Apple認証を行う

NCMBは2024年3月末をもって終了します

Parse ServerはオープンソースのmBaaS(mobile Backend as a Service)です。NCMBと仕組みが似ており、移行先としてお勧めしています。自分で立てるか、Parse Serverのクラウドサービスも利用できます。

Parse Serverでもソーシャル認証を提供しており、GoogleやSign in with Apple認証も利用できます(条件あり)。ただし、SDKで手軽に使える機能が提供されている訳ではないようなので注意が必要です。

SDK側で機能を提供されません

GoogleやSign in with Appleについては、FacebookUtilのような便利な機能はありません。 logInWithAuthType などを使って実装するようです。

Parse Serverの設定

このGoogleやSign in with Apple認証の設定は、環境変数では設定できません(2023年12月現在)。 本来であれば PARSE_SERVER_AUTH_PROVIDERS に設定すれば良いのですが、設定しても思った通りに適用されなかったので、注意してください。

そこで、Parse Serverの起動用JSONファイルで設定します。

{
  "appId": "appId",
      : 省略
  "auth": {
        "google": {
            "client_id": "クライアントID",
            "client_secret": "クライアントシークレット",
            "redirect_uris": ["https://example.com"]
        },
        "apple": {
            "client_id": "クライアントID",
            "team_id": "チームID",
            "key_id": "キーID",
            "key": "秘密鍵"
        }
  }
}

これで準備完了です。

認証の実装

認証を実行する際には、各SDK毎にサードパーティー用認証機能を使います。なお、Unity SDKについてはこのサードパーティー用認証機能が見つかりませんでした。

iOSの場合

PFUser.logInWithAuthType(inBackground: "apple", authData: ["token":tokenString, "id": user])

Androidの場合

Map<string, string> authData = new HashMap<string, string>(); 
authData.put("access_token", tokenString);
authData.put("id", user);
ParseUser.logInWithInBackground("google", authData){
    // 処理
}

JavaScriptの場合

Parse.User.logInWith("google", {
    id: user, access_token: tokenString
});

データについて

ユーザーのデータは _User クラスに保存されます。また、各認証データは authData に保存されます。この辺りはNCMBと同じです。

まとめ

Parse ServerでGoogle認証やSign in with Appleを利用する方法を紹介しました。Parse Serverは、NCMBと仕組みが似ているため、移行先としてお勧めしています。移行に伴う変更量が、他のサービスと比べて少なく済むはずです。

なお、Unityでソーシャル認証を利用していた場合、Parse SDKではそのままでは使えず、何らかのコーディングが必要になりそうな点に注意が必要です。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。