Unity + PlayFab + Google Play Game Service 2021/3版

# 概要
2021/3/20現在の、PlayFabタイトルにGoogle Play ゲームの認証と連携してログインする方法。

[Unity で Google Play ゲームを使用して PlayFab 認証を設定する](https://docs.microsoft.com/ja-jp/gaming/playfab/features/authentication/platform-specific-authentication/google-sign-in-unity)（マイクロソフト公式, 2018/06/11）（以下、本家ドキュメント）に従ってPlayFabとGoogle Play Game Serviceを連携してみようと思ったら、新しいGoogle Play ConsoleのUIが変わりすぎてて「この情報はどこで設定／取得するの？」となって、調べた結果のまとめです。

そのうち本家ドキュメントが更新されて、本記事が無用になる日が来たらいいなぁ。

# 環境
- Unity 2019.4.17f1
- [PlayFab SDK](https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/unity3d/quickstart) 2.104.210208
- [Google Play Games plugin for Unity
](https://github.com/playgameservices/play-games-plugin-for-unity) v0.10.12

# 手順
大枠の流れ自体は本家ドキュメントと変わらないので、変わっている箇所について、引用しながら書きます。

## 概要
> ゲーム APK を作成して、Alpha ビルドとしてアップロードします。

内部テストでもOK。ただしテスターの追加が必要なことに注意。

## Google Play ゲームの構成
> 次に示す例に示されているように、 Google Play Developer 本体のゲームサービスの [リンクされたアプリ] セクションからアプリケーション ID をコピーします。

アプリ IDは、「Play ゲーム サービス」→「設定と管理」→「設定」から、ここまでのGoogle Play ゲームサービスのセットアップで作っているはずの、タイプ「Android」の認証情報を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191129/c119b36e-79bd-b6fa-2805-b1d424014028.png)

> 注意
この画像に示されている アプリ へのリンクを作成するときに生成されるクライアント ID は、正しいものではありません。

これは変わったところではないですが、Unityの「Google Play Games」→「Setup」→「Android Setup」の「Web App Client ID(Optional)」で入力するクライアント ID は、この、タイプ「Android」の認証情報のものではなく、この後作成する、タイプ「ゲームサーバー」のものなのでご注意ください。
（ここ読み違えていて結構ハマってました :sob: 英語翻訳文ってのもあるけど、説明の順序が思ってるのと違って読みづらい…）

> 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`を入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191129/55bc3d25-caf0-c280-4e74-3c2ec1515492.png)

## PlayFab Google サインインのセットアップ
> Google App ライセンスキー -このフィールドは必須ですが、google サインインには関連していません。 このフィールドは、 受信確認 apiを使用したレシートの検証を設定するために使用されます。

> 注意
> このライセンスキーを取得するには、 Google Developer コンソール の [ サービス & api ] セクションを参照してください。 このアプリケーションのライセンスキーのあるセクションを探します。 Base64 でエンコードされた RSA 公開キーをこのフィールドにコピーして貼り付けます。

「収益化のセットアップ」にあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191129/646a83a0-4c8f-13cc-05c7-bb8b7bcf5f48.png)

あとは本家ドキュメント通りの手順でGoogle Play ゲームのサインイン→PlayFabのログインができるかと思います。
![qiita_gpgs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191129/cc51fa96-dafb-2315-338f-3372d0c683ea.png)

# 宣伝
そんなこんなでGoogle Play ゲームとPlayFabを連携させたゲームがこちらです。
[WebGL版（unityroomで公開）](https://unityroom.com/games/kaiten-shinai)とリーダーボード共有してる程度の使い道で、連携が必要なほどのことは特にしていないのですが、まあ機能組み込みの練習ということで…

https://play.google.com/store/apps/details?id=com.zurachu.kaitenshinai

# 参考文献
- [Troubleshooting Unity + PlayFab + Google Play Games integration
](https://javierron90.medium.com/troubleshooting-unity-playfab-google-play-games-integration-c80ef9717fbf)