0
1

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.

PlayFabのGoogle Play Game連携でAddOauthScope("profile")が必要な件について

Posted at

概要

Unity で Google Play ゲームを使用して PlayFab 認証を設定する(マイクロソフト公式, 2018/06/11)(以下、本家)
「Unity ゲームへの Google サインインの追加」のコードでAddOauthScope("profile")が必要になっていることの調査。

環境

本家ドキュメントなどを参考にひととおりセットアップが終わっているものとします。

Google サインインのコード

本家ドキュメントからコピペ

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.AddOauthScope("profile")
.RequestServerAuthCode(false)
.Build();
PlayGamesPlatform.InitializeInstance(config);

サインインのダイアログ

「Googleで公開されているお客様の個人情報とお客様を関連付ける」とかいう、ちょっとものものしく感じる許可を求められます。
言っても公開されている個人情報ってデフォルトは氏名ぐらいではあるんですが、ゲーム程度で要求されたらサインインを躊躇orプレイ自体離脱するユーザーもいそうな気配。
image.png

PlayFabマスタープレイヤーアカウント

サインイン→PlayFabClientAPI.LoginWithGoogleAccountしたら、作成されたPlayFabのマスタープレイヤーアカウントにもガッツリ氏名が出てきます(下側の黒塗り部分)
image.png
アカウント連携の目的って、端末変更した時のユーザー紐付けだけできたら良くて、氏名はゲームのアカウントに必要な情報ではないと思うんですけどねー

AddOauthScope("profile")を削除してみる

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.RequestServerAuthCode(false)
.Build();
PlayGamesPlatform.InitializeInstance(config);

必要なのはPlayFabClientAPI.LoginWithGoogleAccountのrequestに含めるServerAuthCodeだけで、profileとか要らないのでは? と思ったんですが、
AddOauthScope("profile")無しだと、PlayFabClientAPI.LoginWithGoogleAccountで以下のエラーが返ってきて、PlayFabログインに失敗します。
(PlayFabError.GenerateErrorReportをDebug.Logしたものをlogcatで取得)

I Unity   : /Client/LoginWithGoogleAccount: GoogleOAuthNoIdTokenIncludedInResponse

サインインのダイアログ

「Googleで公開されているお客様の個人情報とお客様を関連付ける」がなくて、健全っぽい。
(でもPlayFabログインでエラーになるから、ダメ)
image.png

Firebaseなど他のWebサービスとの連携のサンプルコードをWebで見ていると、このAddOauthScope("profile")無しパターンなので、PlayFabもそれじゃダメなのかなーと思うわけですが、うーむ :thinking:

RequestIdToken()してみる

GoogleOAuthNoIdTokenIncludedInResponseというエラーコードをふまえて、IdTokenが要るのかな? と思ってAddOauthScope("profile")の代わりにRequestIdToken()を追加してみました。

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.RequestServerAuthCode(false)
.RequestIdToken()
.Build();
PlayGamesPlatform.InitializeInstance(config);

これだとサインイン→PlayFabClientAPI.LoginWithGoogleAccountでPlayFabアカウント作成できました。

サインインのダイアログ

「Googleで公開されているお客様の個人情報とお客様を関連付ける」有り :sob:
image.png

APIのスコープ説明を見てると、OAuthでopenid取り扱うこと自体がこれにあたるから、この個人情報〜の許可確認はあって然るべきということなのかな?
image.png

PlayFabマスタープレイヤーアカウント

氏名は取得されなくなったので、ちょっとだけ健全。
image.png

ここはユーザーに見える画面ではないので、ユーザー目線では何も変わっていないけど、現状はこれが落とし所なのかなーという感じです。

宣伝

そんなこんなでGoogle Play ゲームとPlayFabを連携させたゲームがこちらです。

PlayFabでは、先に作ったWebGL版(unityroomで公開)と共有になるランキング(リーダーボード)機能程度しか使っていないのに、個人情報の関連付け要求とか表示されるのしのびないのですが…
Google Play ゲームのサインインを拒否した場合も、Android端末に紐づけてユーザー作るので、遊べないことはないです。
あとGoogle Play ゲーム初めて使ったついでに、実績(クエスト、アチーブメント)もつけてみました。

参考文献

0
1
1

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?