Sign in with Appleを使っている方で開発者アカウントを移行する際は気をつけた方がいいという記事です.Firebase Authを使っている際の解決策はないです.(ご存じの方おられたら教えてください)
問題と発生の経緯
Sign in with Appleを使ったアプリをApp Storeで配信していました.以前は個人名義の開発者アカウントを使っていたのですが,法人化に伴って法人名義の開発者アカウントに移管しました.アプリを他の開発者アカウントに移管することをAppleでは「Appの譲渡(App Transfer)」と言うそうです.Appの譲渡の仕方については公式のAppの譲渡の概要をご覧ください.
Appを譲渡しても筆者は特に何の影響も受けませんでしたが,ユーザから「勝手にログアウトされた」「再ログインしようとしても従来のSign in with Appleアカウントでログインできなくなった」と報告がありました.
Sign in with Appleではユーザはメールアドレスを公開して登録するか,メールアドレスを非公開(プライベートアドレスが発行される)で登録するかが選べます.メールアドレスを公開して自分のアドレスで登録していたユーザには譲渡の影響がありませんでしたが,非公開にしていたユーザは全て再ログイン時に新しいアカウントに変更されてしまい,これまでのデータが表示されなくなりました.
問題の原因
前述のAppの譲渡の概要には以下のように書かれていましたが見落としていました.
受取人に App を譲渡する前に行うデータ準備の一環として、データベース内に存在する各ユーザに対して譲渡 ID を生成する必要があります。この作業は、Apple が提供する REST サービスエンドポイントから行うことができます。
Sign in with Appleでは非公開メールアドレスのユーザのアドレスは譲渡時に引き継がれないようです.そのため,ユーザ毎に譲渡IDを用意して移管前のプライベートアドレスと移管後のプライベートアドレスを紐付ける必要がありました.
どうすべきだったか
この問題へのApple公式の対処法は以下のページにあります.
これらの情報を参照してAppleが提供するREST APIから,譲渡前に譲渡IDを取得,譲渡後に新たなアカウントデータとの接続が必要です.
Firebase Authでは対応できない?
調べた限りFirebase Authの機能としてはAppの譲渡時のためのサポート機能は用意されていないようでした.またfirebaseのadmintoolのようなサーバーサイド用管理ツールでも専用の機能はなさそうです.
Appleが用意しているREST APIを使えば上手くいく可能性がありますが,譲渡前作業を忘れた著者にはもう遅く,こちらでは確認していません.
感想
- 譲渡前はちゃんとドキュメントを読んで準備を忘れないようにしよう