You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter iOS端Google与Facebook登录共存的info.plist配置问题

解决Flutter iOS端Google与Facebook登录无法共存的问题

你的问题根源是info.plist中重复定义了CFBundleURLTypes键——iOS的Property List采用字典结构,重复的键会被最后一次定义覆盖,导致其中一个登录的URL Scheme被丢弃,进而失效。

修正步骤

1. 合并CFBundleURLTypes配置

把Google和Facebook的URL Scheme合并到同一个CFBundleURLTypes数组中,每个平台的Scheme对应一个独立的<dict>节点:

<key>CFBundleURLTypes</key>
<array>
    <!-- Google Sign-in Scheme -->
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <!-- 替换为你的Google REVERSED_CLIENT_ID -->
            <string>*********</string>
        </array>
    </dict>
    <!-- Facebook Sign-in Scheme -->
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <!-- 替换为你的Facebook App ID前缀的Scheme -->
            <string>fb*******</string>
        </array>
    </dict>
</array>

2. 补充LSApplicationQueriesSchemes

为Facebook登录添加必要的查询Scheme,确保App能检测到Facebook客户端:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>sms</string>
    <string>tel</string>
    <!-- Facebook 必要Scheme -->
    <string>fbapi</string>
    <string>fb-messenger-share-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

3. 确保Google登录配置完整

确认你已将GoogleService-Info.plist文件添加到iOS项目的Runner目录中,或者手动添加GIDClientID键:

<key>GIDClientID</key>
<string>你的Google Client ID</string>

4. 清理项目缓存

  • 在Xcode中执行Product > Clean Build Folder
  • 执行pod install更新依赖
  • 重启Xcode后重新运行项目

修正后的完整info.plist核心片段

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- 原有其他配置保持不变 -->
    
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>sms</string>
        <string>tel</string>
        <string>fbapi</string>
        <string>fb-messenger-share-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
    </array>

    <!-- 合并后的URL Types配置 -->
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>*********</string> <!-- Google REVERSED_CLIENT_ID -->
            </array>
        </dict>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb*******</string> <!-- Facebook Scheme -->
            </array>
        </dict>
    </array>

    <!-- Facebook 其他配置 -->
    <key>FacebookAppID</key>
    <string>*******</string>
    <key>FacebookClientToken</key>
    <string>********</string>
    <key>FacebookDisplayName</key>
    <string>********</string>

    <!-- Google 可选手动配置(如果未导入GoogleService-Info.plist) -->
    <key>GIDClientID</key>
    <string>你的Google Client ID</string>

    <!-- 原有其他配置保持不变 -->
</dict>
</plist>

内容的提问来源于stack exchange,提问作者Kafiul Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:57:11