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
相关产品推荐
相关产品推荐

