自定义按钮的 registerCallback 方法 - facebook sdk

S.M*_*ian 2 android facebook facebook-graph-api

我想获取用户个人资料数据;我正在关注本教程:

http://code.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app--cms-23837

上面的教程使用这样的registerCallback方法:

private LoginButton loginButton;
.
.
.
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {

    }

    @Override
    public void onCancel() {

    }

    @Override
    public void onError(FacebookException e) {

    }
});
Run Code Online (Sandbox Code Playgroud)

现在,如何为自定义 Button 实现此方法?


下面的链接使用 Facebook 类,但对我来说这个类未定义!

// Instance of Facebook Class
private Facebook facebook; 
Run Code Online (Sandbox Code Playgroud)

http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/

jos*_*jos 5

您可以使用LoginManager来完成它,而无需使用 LoginButton。

首先,您必须CallbackManager像往常一样创建:

callbackManager = CallbackManager.Factory.create();
Run Code Online (Sandbox Code Playgroud)

接下来,您必须注册使用LoginManager实例创建的回调:

LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {

    }

    @Override
    public void onCancel() {

    }

    @Override
    public void onError(FacebookException error) {
    }
});
Run Code Online (Sandbox Code Playgroud)

最后,您必须使用某些权限调用 Facebook 登录,例如:

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
Run Code Online (Sandbox Code Playgroud)

不要忘记覆盖onActivityResult方法并onActivityResult从以下调用方法CallbackManager

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)