🦔

Info.plistのミスでFlutter×Firebase×Googleログイン時にクラッシュした問題の解決

2022/08/18に公開

発生した問題

Flutter勉強中,以下の記事
https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/chapter4_authentication#googleアカウントによる認証
を参考に,手順通りFirebaseを使用したGoogleログインを試していたつもりだったのが,iOSでの検証で

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Your app is missing support for the following URL schemes: com.googleusercontent.apps.xxxxxxxxxxxxxxxxxx'

とエラーが出てクラッシュしました。(Androidでは正常に動作した)

解決方法

Info.plistにREVERSED_CLIENT_IDをきちんとCFBundleURLSchemesに設定したはずなのに何故だろうと調べていたところ,GithubのIssue
https://github.com/googlesamples/google-services/issues/81#issuecomment-302976984
を発見しました。これに従い直接XcodeからURLの設定をしたところ,正常にログインできました!

問題があった点の確認

Info.plistを再度確認してみると,

<dict>
    ...
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>com.googleusercontent.apps.xxxxxxxxxxxxxxxxxxxxx</string>
            </array>
        </dict>
    </array>
    ...
</dict>

のように生成されていましたが,僕が手動で行った設定だと,

<dict>
    ...
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLSchemes</key>
    <array>
        <string>com.googleusercontent.apps.xxxxxxxxxxxxxxxxxxxxx</string>
    </array>
    ...
</dict>

このように全体をarrayで囲うのを忘れてしまっていて,読み込まれていなかったことが原因でした......

謝辞

無料でここまで充実した記事を公開していただいていることに,感謝するばかりです...
https://zenn.dev/kazutxt/books/flutter_practice_introduction

GitHubで編集を提案

Discussion