実現したいこと
https://firebase.google.com/docs/auth/web/cordova?hl=ja
こちらを参考にCordovaにてFirebaseを利用したGoogleログインを実装したいと考えています。
実際、Androidの方は上記方法で問題なく実装することができました。
しかしiOSで不具合が残っています。
発生している現象
1.SigninWithRedirect(provider)
で問題なくGoogleの認証ページへ遷移します。
2.遷移後Googleのアカウント情報を入力するとアプリへリダイレクトされます。
しかしその際credentialやuserの値がreturnされず、{user: null}
が返されます(undefined
ではありません)。
色々調べて分かった事としては
Android版やWeb版の場合は2の後、Googleアカウントの「アカウントにアクセスできるアプリ(https://myaccount.google.com/u/2/permissions)」に該当のアプリが追加され、FirebaseコンソールのAuthnticationにGoogleプロバイダでアカウントが登録されます。
しかしiOSの場合は何度やってもこれらに登録されることはありませんでした。
次に
Javascript
1provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
であえてスコープを固くして、OAuth認証の際に明示的に許可ボタンをクリックするようにしましたが、それでもGoogleアカウントにも、Firebaseにも登録されませんでした。
逆にデフォルトのスコープがきつすぎるのかと思いuserinfo.email
に絞ってみましたが、それでも変化はありませんでした。
CSP周りも疑ってみて、一番ゆるい
<meta http-equiv="Content-Security-Policy" content="default-src gap: 'unsafe-inline' *">
で設定してみましたが変化はありませんでした。
ちなみにAndroid版やWeb版でGoogleログインをして「アカウントにアクセスできるアプリ」にアプリを登録した後であれば、iOS版でも問題なくGoogleログインできます。
またその場合、Firebaseの方で一旦作成されたGoogleプロバイダの該当アカウントを削除しても、Googleログイン時に問題なくFirebaseに新たなアカウントが登録されます。
なのでOAuth認証時になんとか「アカウントにアクセスできるアプリ」として登録さえできれば良いはずなのですが、方法が見つけられません。
この問題について、ご教授いただけると幸いです。
よろしくお願い致します。
補足情報
Monaca Cloud IDE
cordova-cli: 9.0.0
iOSプラットフォーム: 5.0.0
iOS13実機での検証(iPhone11)
その他必要な情報がありましたらコメントくださいませ。
あなたの回答
tips
プレビュー