Liberent-Dev’s blog

株式会社リベル・エンタテインメントのテックブログです。

Firebaseを使ったGooglePlayGamesログインの落とし穴

こんにちは!
システム開発部のK.Mです。

今回の記事の経緯

弊社内で制作してリリースしたカジュアルゲーム「FingerRocket」にてリリース直前になり、 本番想定の環境でのみ発生する落とし穴に連続でハマってしまい機能が正常に動かないという事がありました。

何も知らないと罠にハマってしまう設定周りの話だったため、忘備録兼同じように困った人が居た場合の道標として残しておきたいと思い記事化しました。

FingerRocketとは?

その前に、「FingerRocket」とは何ぞ?というところですが、

操作は簡単、ロケットを引っ張って向きとパワーを調節し、地球に向けて飛ばすだけ!
ロケットを引き寄せる重力を持った惑星や、宇宙を漂う隕石を避けながら、地球着陸を目指しましょう!
惑星の中には重力が強力なもの、移動するもの、ロケットの動きを阻害するものなど、
様々な効果をもった惑星があります。
それらの障害を回避し、時には活用してクリアを目指していきましょう!

といった内容のハイパーカジュアルゲームとなります。


最初はこのように簡単なステージですが、進むにつれて


このような感じで少しずつ難しくなっていきます。

少しでも気になった方は、下記バナーからDLをお願いします。
Google Play で手に入れよう

発生していた事象

UnityにてFirebaseを使用したGooglePlayGamesへのログインを使っていましたが、本番環境下で記載の現象が発生していました。

  1. GooglePlayGamesへのログインが出来なくなっていた
  2. ランキング用に用意していたリーダーズボードが見れなくなっていた
  3. 得点を登録した後にリーダーズボードを表示すると永遠に読み込み中表示になっていた

ハマった落とし穴

知っている人にとっては当たり前の件だとは思うのですが、下記がハマってしまった内容となります。 各項目に対する詳細な説明は別途しております。

  1. firebaseの設定にてアプリ証明書のフィンガープリントを登録するところがあったが未登録だった

    • firebaseの設定でフィンガープリントを設定する必要があった
  2. アプリ証明書が開発用アプリと本番用アプリで異なることに気付いていなかった

    • 開発用アプリの証明書と本番用アプリの証明書は異なるので、異なることによる対応が必要があった
  3. 上記の影響で、GooglePlayGamesのOAuthの設定でアプリ証明書を指定していた箇所を修正する必要があった

    • OAuthに設定するアプリ証明書を開発用アプリのものから本番用アプリのものにする必要があった

1. firebaseの設定にてアプリ証明書のフィンガープリントを登録するところがあったが未登録だった

単純に設定不足となっていたので、設定する場所に適切なフィンガープリントを設定してあげることで回避可能です。

  • 設定箇所ですが、firebaseの管理画面を表示して「プロジェクトの概要」の横にある歯車のアイコンを押して表示される「プロジェクトの設定」を選択します。

  • その後、プロジェクトの設定の全般画面が表示されるので、下の方にあるマイアプリの設定にてAndroidアプリのパッケージ名を選択すると「SHA証明書フィンガープリント」と設定する箇所があるので、下記の2番で説明している本番用アプリの証明書のフィンガープリントを設定します。

2. アプリ証明書が開発用アプリと本番用アプリで異なることに気付いていなかった

https://developer.android.com/studio/publish/app-signing?hl=ja
よくよく、上のリンクに記載されている証明書周りの内容を読めば分かるのですが、 開発用アプリ(GooglePlayを通さないapk)を単純にインストールして確認している場合と本番用アプリ(GooglePlayの認証を通したapk)で確認している場合でアプリ証明書が異なっており、下記3番の問題が発生していました。

  • GooglePlayConsole上での確認する方法ですが、設定→アプリの完全性を選択

  • 表示される画面のタブにてアプリの署名を選択すると表示される画面に証明書のフィンガープリントの情報があるのですが、「アプリ署名鍵の証明書」に記載されているものが開発用アプリの証明書になっていました。

  • 「アップロード鍵の証明書」に記載されているものが、本番用アプリの証明書になっていました。

3. GooglePlayGamesのOAuthの設定でアプリ証明書を指定していた箇所を修正する必要があった

OAuthで使用するアプリ証明書が開発用アプリのものとなっていたため、本番用アプリではリーダーズボードから情報を取得出来なくなっていました。
本番用アプリでリーダーズボードを見るためにはOAuthの設定にて本番用アプリの証明書を設定する必要がありました。

  • 設定箇所はGooglePlayConsoleの「Playゲームサービス」→「設定と管理」→「設定」

  • 表示された設定画面の下の方にある認証情報の箇所にあるAndroidで赤枠で囲った辺りを選択すると認証の設定画面へ移動します。

  • 認証設定画面にてOAuthクライアントにて適切なもの、今回はフィンガープリントが本番用アプリの証明書と同じものを設定する必要がありました。

最後に

リベル・エンタテインメントでは、このような最新技術などの取り組みに興味のある方を募集しています。
もしご興味を持たれましたら下記サイトにアクセスしてみてください。
https://liberent.co.jp/recruit/