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

React Native集成FB SDK带权限登录时底部按钮隐藏UI问题求助

Facebook登录弹窗“继续”按钮隐藏问题(react-native-fbsdk-next v11.1.0)

问题详情

当前使用环境:

  • react-native: 0.68.2
  • react-native-fbsdk-next: ^11.1.0

应用集成Facebook账号登录及主页管理功能,调用LoginManager.logInWithPermissions触发登录弹窗时,弹窗底部的“继续”按钮被隐藏,用户无法完成授权流程。仅当用户删除设备上的Facebook原生应用,通过网页视图登录时按钮正常显示。

已尝试的无效操作:

  • 删除应用并重新安装
  • 断开并重新连接Facebook账号
  • 网络搜索无相关解决方案

旧版FB SDK无此UI异常,更新到新版后出现该问题。

原核心代码:

LoginManager.logInWithPermissions(FBPermissionsArray)
.then(
login => {
if (login?.isCancelled) {
console.log('Login cancelled');

                    setloading(false)
                    
                    showMessage({
                        message: "Facebook login cancelled",
                        duration: 5000,
                        statusBarHeight: 0,
                        titleStyle: { lineHeight: hp('2%'), fontSize: RFValue(14) },
                        type: 'warning'
                    })
                } else {
                    AccessToken.getCurrentAccessToken().then(data => {
                        console.log('device token data>>>>>>', data);

                        const accessToken = data?.accessToken.toString();
                        getInfoFromToken(accessToken, loaderValue);
                    });
                }
            },
            error => {
                console.log('Login fail with error: ' + error);
                
                setloading(false)
                
                showMessage({
                    message: "Facebook login failed. Please try again",
                    duration: 5000,
                    statusBarHeight: 0,
                    titleStyle: { lineHeight: hp('2%'), fontSize: RFValue(14) },
                    type: 'warning'
                })
            },
        );

const FBPermissionsArray = [
'public_profile',
'pages_show_list',
'pages_manage_ads',
'pages_read_engagement',
'leads_retrieval',
'ads_management',
'pages_manage_metadata',
'business_management'
]

可能的解决方案

1. 精简权限列表测试

你请求的权限包含多个高权限的企业级权限,新版SDK的弹窗可能因权限过多导致布局挤压,按钮被挤出可视区域。建议先临时减少权限数量,只保留最核心的权限(比如public_profile、pages_show_list)测试按钮是否恢复显示。如果有效,再逐步添加必要权限,定位是哪个权限触发的布局问题。

2. 调整登录弹窗行为配置

尝试在调用logInWithPermissions时指定登录行为参数,强制弹窗的渲染模式:

LoginManager.logInWithPermissions(FBPermissionsArray, {
  loginBehavior: 'native_with_fallback', // 优先原生弹窗,失败则 fallback 到网页视图
})

部分版本的SDK支持通过配置调整弹窗的适配逻辑,可缓解布局异常问题。

3. 调整SDK版本

既然旧版SDK无此问题,可尝试:

  • 降级react-native-fbsdk-next到之前可用的稳定版本(比如v10.x系列),确认与react-native 0.68.2的兼容性
  • 升级到最新稳定版的react-native-fbsdk-next,检查官方是否已修复该UI布局bug

4. 检查系统适配配置

针对不同系统版本调整适配参数:

  • Android:在AndroidManifest.xml中调整窗口软输入模式,避免弹窗被挤压:
    <activity
      android:name=".MainActivity"
      android:windowSoftInputMode="adjustResize">
    </activity>
    
  • iOS:在Info.plist中添加视图适配相关配置,确保弹窗适配不同屏幕尺寸:
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    

5. 排查全局样式冲突

检查应用的全局样式是否修改了Modal、WebView的默认样式(比如强制设置高度、边距),这些修改可能会影响Facebook弹窗的渲染。可临时注释掉全局样式中的相关配置,测试按钮是否恢复显示。

内容的提问来源于stack exchange,提问作者Sufian Ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:23:25