環境
xcode 9.4
swift 4
iOSAppを開発
#やりたいこと
Firebase のAuthenticationを使っています
Anonymousログインや、Googleログインなど認証方法がいくつかありますが
今回やりたいことはAnonymousログインで払いだされたUserIDを引き継いでGoogleでログインしたいです。
仕様的に不可能な可能性もありますが、確証が持てません。
###想定している状況
ユーザはログインせずにFirestoreにデータを保存します。
実際、裏では自動的にAnonymousログインしており AnonymousのIDを使って
Firestoreなどにデータ保存しています(referenceにUseridが含まれる)
ここでデータを永続化するためにGoogleアカウントと連携したいと考えています。
つまり,GoogleログインすればAnonymousログイン時に保存していたデータを参照できるようにしたいです。
Anonymousログインした時に払いだされるIDを "IDAAAA"として
Googleのcredentialを取得してAnonymouUserにLinkしたとします。
この後Googleでログインすると "IDGGGG"のように、別のIDとしてログインされます。
期待する結果はGoogleでログインでも"IDAAAA"であることです。
この状況だとAnonymousログイン時に保存したデータは"IDAAAA"をreferenceに含んでいるため、
"IDGGGG"と"IDAAAA"を自前で紐づけておかない限り参照できません。
自前で実装してもいいのですがうまく連携できる方法がないのか模索している状況です。
Linkの実装は下記の通り行なっています。
Linkの参考
swift
1 2guard let authentication = user.authentication else { return } 3let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, 4 accessToken: authentication.accessToken) 5
swift
1 user.link(with: credential) { (user, error) in 2 // ... 3}
GoogleとTwitterのリンク
Google Login状態で TwitterアカウントとのLinkは試した結果、うまくいきました。
GoogleのUserIDが"IDGGGG"の状態で twitterをLinkし、 Twitterログインすると"IDGGGG"のままでした。
仕様上AnnymousIDを引き継げないのであれば諦めて自前で連携される仕組みを検討しようと思います。
どなたかご経験あればご教示いただけないでしょうか

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/18 04:48
2018/04/18 08:10