前提・実現したいこと
Firebase Authenticationを利用してSNS認証の再認証をしたいです。
KotlinでAndroid,SwiftでiOSアプリを開発しています。アプリ内に会員専用ページがあり、会員登録はFirebase AuthenticationによるSNS認証を利用しようと思っています。認証で利用する予定のSNSは、Google, Facebook, Twitter, Appleです。SNS認証→Firebaseユーザーの作成はFirebaseUIのドキュメントを読み問題なく実装できました(Androidで先行して作っています)。
SNS認証の有効性を毎回確認したいなと思い、その方法をどうれば良いか分からず、質問させていただいております。例えばFacebookであれば、設定>アプリの項目からアプリの連携を削除することができます。このようにSNS側からアプリとの連携を削除された場合、私のアプリでもログアウトされたような状態にしたいです。そのために、アプリ起動時に保存した認証情報を元に再認証を行って、再認証が通らなければログアウトする、といった処理を考えています。
上記のような処理をFirebase Authenticationで実現できる方法があれば教えていただきたいです。または「SNS側からアプリとの連携を削除された場合、私のアプリでログアウトされたような状態」にする他に良い方法があればご教示ください。
試したこと
- SNSの再認証はFirebaseUser.reauthenticaateメソッドを利用すれば良さそうだと思っています
- FirebaseUser.reauthenticateは引数にAuthCredentialを渡さなければならないようです
- AuthCredentialを作成する共通のメソッドが残念ながらみつからず、GoogleはGoogleAuthProvider.getCredential, FacebookはFacebookAuthProvider.getCredential, TwitterはTwittrAuthProvider.getCredential, AppleはOAuthProvider.getCredentialメソッドを利用すれば良さそうです
- そのためにはそれぞれのSNSのトークンやシークレットを保存、再利用しないといけないようです
- Facebookのトークンの期限は60日間、Twitterは無期限と各ドキュメントに記載があり問題なさそうなのですが、Googleのトークンは1時間で有効期限が切れるようです
- ここで詰まっています。リフレッシュトークンを利用すれば良いのかもと思い調べてみましたが、私が調べた限りではドキュメントにはサーバーサイドでの利用を想定した記載しかなく、間違っているような気がしています(https://developers.google.com/identity/sign-in/android/offline-access#enable_server-side_api_access_for_your_app)
あなたの回答
tips
プレビュー