3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity+PlayFabでGoogle認証でのログイン

Posted at

はじめに

PlayFabのGoogle認証ログインについて(https://docs.microsoft.com/ja-jp/gaming/playfab/features/authentication/platform-specific-authentication/google-sign-in-unity )現在(202105)と仕様が変わりすぎていて落とし穴にハマったので備忘録的な形で作ることに

実際にログインを試行した環境

Unity 2019.4.21f1
play-games-plugin-for-unity v10.12
Android実機

用意する物

・Unityプロジェクト(Androidビルドができるようにしておく)
・PlayFabを一通り扱えるような環境
(こちらが導入しやすかったので紹介しておきます https://kan-kikuchi.hatenablog.com/entry/PlayFabLogin
・GooglePlayゲームSDK (https://github.com/playgameservices/play-games-plugin-for-unity )
・Google開発者アカウントの作成(若干の初期費用がかかります)
・GoogleログインをするためのAndroid環境(実機がベスト)

実際に行った手順

GooglePlayゲームSDKのユニティパッケージをインポートする。

これはGooglePlayGamesPlugin-0.10.12.unitypackageをそのまま流れるように全部ImportでOK
image.png
インポートが終わると、Unityエディタに下記のメニューが追加される。
ビルド設定をAndroidにしないと恐らくメニューが有効かされないので注意!
image.png

**Enable Android Auto-resolution?**はEnableを選択
image.png
前述のAndroid setupが開けるようになったらこの項目は完了

APKファイルの作成

アップロード用のAPK(Android実行ファイル)を作成する。
作成するためにプレイヤー設定を変更していく。
image.png
Android⇒その他の設定を開いてパッケージ名の項目を探す。
このパッケージ名が環境構築中しょっちゅう~~.~~.~~の書式から変わってしまっていることもあるので注意しておく。
また、このパッケージ名は各所で使用する為すぐ見れるようにしておくと良い。命名規則等についてはこのあたりを参照してほしい。( http://jumbuck.cocolog-nifty.com/blog/2011/07/android-6c2b.html )
image.pngimage.png

スクリプティングバックエンドをIL2CPPに変更しておく
これをしないとARM64出力ができない
image.png

ARM64にチェックを入れる
これをしないと64bit系に対応してないよとGooglePlayConsoleでエラーが吐かれる
image.png

暗号化用のカギの作成をする
公開設定タブ⇒キーストアマネージャーを開く
image.png
鍵を自分で管理しやすい場所に作成し、パスワードを設定する。
Aliasには鍵の名前を設定する
この時のパスワードをしっかり記憶しておかないと、アプリが今後GooglePlayConsole上から変更できなくなる可能性もあるそうなのでしっかり管理しておく。
image.png
image.png

カギが設定できると下記のように鍵のファイルと今どの名前のカギを使っているかが表示されるようになる。
Unityを立ち上げる度にパスワードは空になるので、ビルドできなかったら大体ここを入力しなおさなければならない。
image.png

ここまでできたら一度ビルドをする
ビルドをするとエラーがなければAPKファイルが出力されるはず
途中下記のGooglePlaySDKの設定がされてないよというポップアップが出るが、ひとまず最初は無視して良い。
image.png
image.png

GooglePlayConsoleでアプリを作成する

Google開発者アカウントでGooglePlayConsoleにサインインすると下記のような画面が出るので、まずは右上のアプリを作成
アプリ名入力項目は適当で良いが、Googleサインイン用のプロジェクトだからといってアプリ名にGoogleを入れるとアプリ作成ができないので注意。
image.png
ここからが自分が引っかかったポイントになるが、内部テスト新しいリリースを作成ボタンでテスト用に作らなければならない。そうしなかった場合、アプリが恐らく製品版リリースした状態でないと接続確認ができないという落とし穴にはまってしまう。
image.png
作成したら署名しないとリリースできませんよ。ということで次へボタンを押す。
押した後、内部リリースが下記画像のようにアクティブになり、作成できるようになるはず。
image.png
アップロードしてエラーが出ないかどうかを確認する。エラーが出たらエラー内容に言われたとおりに対応をする。
リリース名とかリリースノートはテストならとりあえず適当で問題なし。リソースのレビューができなければ一旦保存ボタンを押す。
image.png

保存ボタン押下後、リリースのレビューボタンが押せるようになるはずなので、それを押す。
image.png

この時点でもエラーが出る可能性があるのでそれは対応するが、警告は一旦無視しても問題ない。
内部テストとしての公開を開始ボタンでテストバージョンを作成する。
image.png

下記のような状態になっていればOK
image.png

GooglePlayGameサービスAPIの設定

GooglePlayConsole内のPlayゲームサービス⇒設定と管理⇒設定⇒いいえ、ゲームでGoogleAPIを使用していません。を選択し、ゲーム名を入力して画面右下作成ボタンを押す。
image.png

Playゲームサービスの設定画面になるはずなので、
OAuth同意画面を設定を押す
image.png
そうするとGoogleCloudPlatformに行くように指示されるのでリンクへ飛ぶ
image.png

GoogleCloudPlatform(APIとサービス)の設定

OAuth同意画面では外部のラジオボタンにチェックを入れる。後で、テストユーザーを追加することによりテストが実行できるようになる。
チェックを入れたら作成する。
image.png
次にアプリ情報の入力画面になるので、入力必須の項目を入力して次へ進めていく。
進めていくとテストユーザーの登録画面になるので、テストユーザーに追加したいGoogleアカウントのメールアドレスを入力して登録しておく。これをしておかないとサインインのテストができないので注意。
image.png

次に認証情報の作成を行う。
image.png

Androidを選択してパッケージ名はUnityのプロジェクト設定に記入したものと同じものを入れる。
image.png
証明書(フィンガープリント)はGooglePlayConsole内にある
設定⇒アプリの完全性⇒アプリ署名鍵の証明書⇒SHA1 フィンガープリントの内容をコピペ。終わったら作成ボタンでAndroidクライアントを作成完了。
image.png

次にAndroidアプリケーションの作成と同じ手順でウェブアプリケーションの作成を選択する。
image.png

承認済みのJavaScript生成元URIを追加ボタンを押して
自分のPlayFabタイトルのAPIエンドポイントを入力する。
image.png
PlayFabタイトルのエンドポイントの取得の仕方はタイトルへ入る⇒設定アイコン⇒タイトルの設定⇒API機能タブ⇒APIエンドポイントにある。これはタイトル毎に違うのでそのまま入力しないように注意!また末尾の/は消しておく。
image.png

承認済みリダイレクトURIは決まったURL(https://oauth.playfab.com/oauth2/google )を入力して作成ボタンを押す。
image.png

作成すると下記画面が出て、クライアントIDとシークレットが出るので、控えておく。
また、このIDとシークレットは認証情報から該当のクライアントIDをクリックすれば見ることもできる。
image.png

PlayFabのタイトルにGoogleを連携する

PlayFabタイトルの左側メニューからアドオンを選択
image.png
Googleを選択
image.png
Googleをインストールを選択
image.png
インストールには各項目が必要
image.png
ここで必要になるライセンスキーはGooglePlayConsole内の収益化のセットアップライセンスを参照する
image.png
全て入力ができたらGoogleをインストールボタンで完了。

GooglePlayConsoleに認証情報を追加する

Playゲームサービスの設定から認証情報を追加を選択する。
image.png

ゲームサーバーを選択し、名前を適当につける。
認証クライアントに候補が出ない場合は下記のOAuthクライアントを更新をクリックする。
選択することができたら変更を保存する。
image.png

上記手順と同じ手順でAndroidの認証情報も追加しておく。
直接はクライアント内では使っていないがこれをやっていないとストアからテストアプリを落とせないので注意。
image.png

テスターの追加

こちらはGooglePlayConsole側の内部リリースに対するテスターの追加をする。
テスト⇒内部テスト⇒テスター数⇒メーリングリストを作ってその中にテスト用のGoogleアカウントのメールアドレスを入力し、選択する。
image.png
テストへの参加という項目があるのでリンクをコピーし、該当の端末でリンクを入力する。(まだこの時点ではアプリダウンロードページへは飛べない)
image.png
また、変更がおわったら最後に変更を保存ボタンを押しておく。

Unity側でのGoogleサインイン処理

Googleサインインを実行する為のボタンと、サインイン状態を表示するテキストを用意。
image.png

サインイン用のスクリプトを作り、クリックした時のイベントにSignInメソッド(とりあえず今は空)が実行されるようにしておく。
image.png

この時点でPlayFabのセッティングは終了させておくこと。
GoogleSignIn.csの中身は大体こんなかんじ。
Textは作ったテキストオブジェクトと紐づけておく。

[SerializeField] Text testText;

void Start(){
    // GooglePlayの初期化
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
    .AddOauthScope("profile")
    .RequestServerAuthCode(false)
    .Build();
    PlayGamesPlatform.InitializeInstance(config);

    PlayGamesPlatform.DebugLogEnabled = true;

    PlayGamesPlatform.Activate();
}

public void SignIn(){
    // サインイン
    Social.localUser.Authenticate((bool success) => {
        if (success)
        {
            testText.text = "GoogleSignInState:Success";
            PlayFabClientAPI.LoginWithGoogleAccount(new LoginWithGoogleAccountRequest()
            {
                TitleId = PlayFabSettings.TitleId,
                ServerAuthCode = PlayGamesPlatform.Instance.GetServerAuthCode(),
                CreateAccount = true
            }, (result) =>
            {
                // PlayFabLoginに成功した内容を書く
            }, (result) =>
            {
                // PlayFabLoginに失敗した内容を書く
            });
        }
        else
        {
            testText.text = "GoogleSignInState:Failed";
        }
    });
}

GooglePlayGames環境設定

GooglePlayGames⇒Setup⇒AndroidSetupを開く。
image.png
AndroidSetupのResourcesDefinitionはGooglePlayConsole⇒Playゲームサービス⇒設定と管理⇒設定⇒リソースを取得からコピペ。
ClientIDは同じく設定にあるゲームサーバーのOAuthクライアントIDから。(ウェブアプリケーションのクライアントID)
image.png
Setupボタンを押して完了

実行ファイルの生成とアップロード

ビルドをする。
この時2回目のビルドになるのでバンドルバージョンを過去の物より高くしないとアップロードが通らないので注意。
image.png
APKが出力できたら新しいリリースをアップロードして公開する
image.png
画面を進めて内部テストとしての公開を開始で公開。
image.png

実行確認

テスターの追加時にコピーして、Androidデバイスに送ったリンクの下記画像のdownload it on GooglePlayのリンク先に飛べるようになるので、そこからアプリをダウンロードする。
image.png

あとは実機でダウンロードボタンを押してGoogleのOAuth確認画面が出て進めることができれば成功。
お疲れ様でした。
PlayFabにログインできたかどうかのチェックは、コード内でも実装できるが下記のように各タイトルのページからユーザーが生成されたかどうかで確認することもできる。検索で出てこない時は何度か押すと出てくる。

image.png

3
2
0

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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?