概要
2021/3/20現在の、PlayFabタイトルにGoogle Play ゲームの認証と連携してログインする方法。
Unity で Google Play ゲームを使用して PlayFab 認証を設定する(マイクロソフト公式, 2018/06/11)(以下、本家ドキュメント)に従ってPlayFabとGoogle Play Game Serviceを連携してみようと思ったら、新しいGoogle Play ConsoleのUIが変わりすぎてて「この情報はどこで設定/取得するの?」となって、調べた結果のまとめです。
そのうち本家ドキュメントが更新されて、本記事が無用になる日が来たらいいなぁ。
環境
- Unity 2019.4.17f1
- PlayFab SDK 2.104.210208
-
Google Play Games plugin for Unity
v0.10.12
手順
大枠の流れ自体は本家ドキュメントと変わらないので、変わっている箇所について、引用しながら書きます。
概要
ゲーム APK を作成して、Alpha ビルドとしてアップロードします。
内部テストでもOK。ただしテスターの追加が必要なことに注意。
Google Play ゲームの構成
次に示す例に示されているように、 Google Play Developer 本体のゲームサービスの [リンクされたアプリ] セクションからアプリケーション ID をコピーします。
アプリ IDは、「Play ゲーム サービス」→「設定と管理」→「設定」から、ここまでのGoogle Play ゲームサービスのセットアップで作っているはずの、タイプ「Android」の認証情報を確認。
注意
この画像に示されている アプリ へのリンクを作成するときに生成されるクライアント ID は、正しいものではありません。
これは変わったところではないですが、Unityの「Google Play Games」→「Setup」→「Android Setup」の「Web App Client ID(Optional)」で入力するクライアント ID は、この、タイプ「Android」の認証情報のものではなく、この後作成する、タイプ「ゲームサーバー」のものなのでご注意ください。
(ここ読み違えていて結構ハマってました 英語翻訳文ってのもあるけど、説明の順序が思ってるのと違って読みづらい…)
Google のサインインが PlayFab で動作するためには、Web クライアント ID を使用する必要があります。 Web クライアント ID を取得するには、 Google Play 本体の [サービスと API ] セクションでweb アプリケーションをリンクする必要があります。
次に、アプリを web 用に構成します。
「Play ゲーム サービス」→「設定と管理」→「設定」から、新規にタイプ「ゲームサーバー」の認証情報およびOAuth クライアントを作成することを示しています。
https://[titleid].playfabapi.com[起動 URL ] フィールドに、このエンドポイントを入力します。
[承認済みの JavaScript 生成元] フィールドに名前が変わっています。末尾のスラッシュは不要というか入れたら怒られる。
重要
承認されたリダイレクト Uri の既定のコールバックを変更する必要があります。 正しい URI は https://oauth.playfab.com/oauth2/google です。 この手順を実行しない場合は、 不一致 redirect_uri エラーが表示されます。
これも変わったところではないですが、[承認済みのリダイレクト URI] フィールドにhttps://oauth.playfab.com/oauth2/google
を入力。
PlayFab Google サインインのセットアップ
Google App ライセンスキー -このフィールドは必須ですが、google サインインには関連していません。 このフィールドは、 受信確認 apiを使用したレシートの検証を設定するために使用されます。
注意
このライセンスキーを取得するには、 Google Developer コンソール の [ サービス & api ] セクションを参照してください。 このアプリケーションのライセンスキーのあるセクションを探します。 Base64 でエンコードされた RSA 公開キーをこのフィールドにコピーして貼り付けます。
あとは本家ドキュメント通りの手順でGoogle Play ゲームのサインイン→PlayFabのログインができるかと思います。
宣伝
そんなこんなでGoogle Play ゲームとPlayFabを連携させたゲームがこちらです。
WebGL版(unityroomで公開)とリーダーボード共有してる程度の使い道で、連携が必要なほどのことは特にしていないのですが、まあ機能組み込みの練習ということで…