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

Android自定义Facebook登录按钮时如何申请邮箱权限?

解决自定义按钮请求Facebook邮箱权限的问题

当你用自定义Android按钮替代官方的LoginButton时,确实没法再调用setReadPermissions方法,但我们可以直接在触发登录请求的时候指定需要的权限,具体操作看下面:

  • 第一步:和之前一样初始化CallbackManager,用来处理登录回调
  • 第二步:给你的自定义按钮设置点击事件,在点击事件里调用LoginManager的logInWithReadPermissions方法,把需要的权限(比如EMAIL)作为参数传进去
  • 第三步:依旧注册回调来处理登录成功、取消、错误的情况

完整的代码示例如下:

// 初始化CallbackManager
facebookCallbackManager = CallbackManager.Factory.create();

// 找到你的自定义按钮
Button customLoginButton = findViewById(R.id.your_custom_button_id);

// 设置点击事件
customLoginButton.setOnClickListener(v -> {
    // 在这里指定需要的权限,比如EMAIL
    LoginManager.getInstance()
            .logInWithReadPermissions(
                    this,
                    Collections.singletonList(EMAIL)
            );
});

// 注册回调处理结果
LoginManager.getInstance().registerCallback(facebookCallbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        final String accessToken = loginResult.getAccessToken().getToken();
        // 这里处理登录成功后的逻辑
    }

    @Override
    public void onCancel() {
        // 处理用户取消登录的情况
    }

    @Override
    public void onError(FacebookException exception) {
        // 处理登录错误的情况
    }
});

其实官方LoginButton的setReadPermissions本质上也是在内部帮你调用了logInWithReadPermissions方法,换成自定义按钮后,我们只需要手动在触发登录时传入权限参数就可以了,回调的处理逻辑和之前完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:19:15