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

使用CustomTabsIntent完成Facebook登录授权后如何返回应用并获取授权信息

解决方案

你当前的问题核心是没有配置OAuth授权的回调唤起逻辑,Facebook授权完成后无法识别要跳转回你的应用,按以下步骤修改即可:

  • 第一步:在Facebook开发者后台的应用登录配置项中,新增OAuth重定向URI,填写你自定义的应用唤起地址,示例为 com.your.app.packagename://fb-login-callback,Scheme建议用你的应用包名避免和其他应用冲突。
  • 第二步:在AndroidManifest.xml中为你的登录页Activity添加Deep Link唤起的intent-filter配置:
<activity
    android:name=".YourLoginActivity"
    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" />
        <!-- 和Facebook后台配置的重定向URI参数保持一致 -->
        <data
            android:scheme="com.your.app.packagename"
            android:host="fb-login-callback" />
    </intent-filter>
</activity>
  • 第三步:在登录页Activity的onCreate和onNewIntent方法中接收Facebook返回的授权参数,再传递给WebView的登录页面处理:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ... 原有初始化逻辑
    handleAuthCallback(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleAuthCallback(intent);
}

private void handleAuthCallback(Intent intent) {
    Uri callbackUri = intent.getData();
    if (callbackUri != null && callbackUri.getScheme().equals("com.your.app.packagename")) {
        // 从Uri中取出Facebook返回的授权码、状态码等参数
        String authCode = callbackUri.getQueryParameter("code");
        String state = callbackUri.getQueryParameter("state");
        // 方式1:将参数拼接给WebView的登录页地址加载
        webView.loadUrl("你的原有登录页地址?fb_auth_code=" + authCode + "&state=" + state);
        // 方式2:直接注入JS参数给已加载的登录页面
        webView.evaluateJavascript("handleFbAuthCallback('"+authCode+"', '"+state+"')", null);
    }
}
  • 补充优化:你原来的Custom Tab启动代码可以去掉FLAG_ACTIVITY_NEW_TASK配置,避免授权页和你的应用不在同一个任务栈,返回时直接回到你的登录页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:15:06