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

Facebook登录成功但Firebase Authentication认证失败求助

Facebook登录成功但Firebase认证失败的排查方案

看起来你遇到了挺棘手的问题——Facebook登录明明成功了,但Firebase那边就是认证不过去,而且之前功能还正常,这种“突然失效”的情况确实容易让人摸不着头脑。我帮你整理几个从配置到代码的排查方向,应该能帮你找到问题所在:

一、先查Facebook开发者平台的核心配置

这是最容易出问题的地方,哪怕之前配置对了,也可能因为平台更新或者误操作导致失效:

  • 同步OAuth重定向URI:去Firebase控制台的「Authentication > 登录方法 > Facebook」里,复制那个「OAuth重定向URI」(一般是https://<你的Firebase项目ID>.firebaseapp.com/__/auth/handler),然后到Facebook开发者平台的「产品 > Facebook登录 > 设置」里,把这个URI添加到「有效的OAuth重定向URI」列表中,确保两者完全一致。
  • 检查应用状态与测试用户:如果你的Facebook应用处于「开发模式」,只有添加到「测试用户」列表里的账号才能正常登录;如果是正式上线的应用,要确认状态已经切换到「上线」。
  • 核对应用ID与密钥:Firebase里填写的Facebook应用ID和应用密钥,要和Facebook开发者平台「设置 > 基本」里的信息完全匹配,哪怕一个字符错了都会导致认证失败。

二、验证Firebase项目的配置文件

  • 确认你的google-services.json是最新的:有时候修改Firebase的登录配置后,旧的配置文件会失效。去Firebase控制台重新下载这个文件,替换掉项目app目录下的旧文件,然后Clean再Rebuild项目。

三、代码层面的细节排查

看你的代码逻辑大体是对的,但可以优化一下错误排查的部分,同时检查几个容易忽略的点:

1. 打印更详细的错误信息

你的onComplete方法里已经打了异常日志,但可以把异常信息直接放到Toast里,这样能直观看到失败原因:

@Override
public void onComplete(@NonNull Task<AuthResult> task) {
    if (task.isSuccessful()) {
        // Sign in success, update UI with the signed-in user's information
        Log.d(TAG, "signInWithCredential:success");
        FirebaseUser user = fAuth.getCurrentUser();
        updateUI(user);
    } else {
        // 打印详细异常信息,方便排查
        Exception exception = task.getException();
        Log.w(TAG, "signInWithCredential:failure", exception);
        String errorMsg = exception != null ? exception.getMessage() : "Unknown error";
        Toast.makeText(ActMain.this, "Authentication failed: " + errorMsg, Toast.LENGTH_LONG).show();
    }
}

比如常见的错误有「Invalid OAuth access token」「App not authorized」等,这些信息能直接指向问题根源。

2. 检查AndroidManifest配置

确保你已经添加了Facebook登录所需的权限和Activity:

<uses-permission android:name="android.permission.INTERNET" />

<meta-data 
    android:name="com.facebook.sdk.ApplicationId" 
    android:value="@string/facebook_app_id"/>

<activity 
    android:name="com.facebook.FacebookActivity"
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label="@string/app_name" />

<activity 
    android:name="com.facebook.CustomTabActivity" 
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="@string/fb_login_protocol_scheme" />
    </intent-filter>
</activity>

注意fb_login_protocol_scheme的值要设置为fb{你的Facebook应用ID}(比如fb1234567890),这个在strings.xml里配置。

四、Firebase Auth的状态检查

  • 确认Firebase控制台「Authentication > 登录方法」里的Facebook登录是启用状态,有时候可能不小心被关掉了。
  • 检查Firebase项目的配额:虽然Auth的免费额度很高,但如果你的项目请求量突然暴涨,可能触发临时限制,可以去「Firebase控制台 > 用量与配额」查看。

五、清除缓存与测试

  • 卸载重装你的App,同时清除Facebook App的缓存,避免旧的会话数据干扰。
  • 用之前能正常登录的测试账号再试一次,排除是当前账号的问题。

按照这个步骤排查,应该能很快找到问题所在。如果拿到了具体的错误信息,也可以根据信息更精准地定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:01:08