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

Android中如何打印Facebook GraphRequest用户信息及解决回调未执行问题

解决Facebook GraphRequest回调未执行及无法打印用户信息的问题

排查与修复步骤:

  1. 修正语法错误
    你的代码中匿名回调类的闭合括号存在错误,导致回调无法正确绑定到请求:

    // 错误写法
    @Override
    public void onCompleted(@Nullable JSONObject jsonObject, @Nullable GraphResponse graphResponse) {
        // ...
    }); 
    
    // 正确写法
    @Override
    public void onCompleted(@Nullable JSONObject jsonObject, @Nullable GraphResponse graphResponse) {
        // ...
    })); // 先闭合匿名类大括号,再完成new请求的括号闭合
    
  2. 确保登录时申请了必要权限
    获取email字段必须提前申请email权限,登录代码需包含该权限:

    LoginManager.getInstance().logInWithReadPermissions(this, 
        Arrays.asList("public_profile", "email"));
    

    未申请对应权限时,Facebook会拒绝返回敏感字段,甚至直接导致请求异常。

  3. 替换System.out.println为Android日志工具
    Android中System.out.println的输出可能无法在Logcat中显示,改用官方日志API才能稳定查看输出:

    @Override
    public void onCompleted(@Nullable JSONObject jsonObject, @Nullable GraphResponse graphResponse) {
        if (graphResponse == null) {
            Log.e("FacebookRequest", "响应为空");
            return;
        }
        // 先检查请求是否出错
        if (graphResponse.getError() != null) {
            Log.e("FacebookError", "请求错误:" + graphResponse.getError().getErrorMessage());
            return;
        }
        // 打印原始响应
        String rawResponse = graphResponse.getRawResponse();
        Log.d("FacebookResponse", "rawResponse: " + rawResponse);
        // 解析并打印name和email
        try {
            String name = jsonObject.getString("name");
            String email = jsonObject.getString("email");
            Log.d("FacebookUserInfo", "用户名:" + name + " | 邮箱:" + email);
        } catch (JSONException e) {
            Log.e("FacebookParse", "解析失败:" + e.getMessage());
        }
    }
    
  4. 检查AccessToken有效性
    发起请求前先验证Token状态,避免因Token无效导致请求失败:

    AccessToken accessToken = loginResult.getAccessToken();
    Log.d("FacebookToken", "Token是否有效:" + accessToken.isValid());
    Log.d("FacebookToken", "已获取权限:" + accessToken.getPermissions());
    
  5. 确认设备网络状态
    GraphRequest需要网络请求才能获取数据,设备断网时回调不会触发,需确保设备处于联网状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:57:34