Unity

FirebaseでSNS連携した時にユーザ名などを取得する方法【Unity】

Unity
記事内に商品プロモーションを含む場合があります

Firebase AuthenticationのSNSログインにて取得できるFirebaseUserオブジェクトには

  • 「DisplayName」にSNSのユーザ名
  • 「PhotoURL」にプロフィールアイコンのURL

これらが格納されていました。以下はTwitterログインの例です。

しかしながら既存アカウントにLinkWithCredentialAsyncでSNS連携するとこれらの値は更新されませんでした(勝手に更新されても困るので当然ではありますが)

この問題へどう対策したらいいのかマニュアルを眺めていてもイマイチわからなかったので調べてみたところLinkAndRetrieveDataWithCredentialAsyncというメソッドを見つけました。いかにもそれっぽい。

このメソッドが返すSignInResultの中身を掘り下げていったらお目当てのデータを見つけることができました。

まだTwitterしか試していないので他のSNSでも同じキーで取得できるかわかりませんが、これを利用すれば大丈夫そうです。

ちなみにここからTwitterであれば説明文やカバー画像のURLなど、他のデータを取得することもできました。

(2021年10月15日追記)上記の方法でも取得できますが、ユーザ名と画像URLだけならFirebase側で簡単に取得できるように用意してくれていました。

FirebaseUserのProviderDataで連携された認証情報の一覧を取得できます。