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

时间:2015-07-29 19:07:42

标签: 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) {

    }
});

现在,我如何为自定义按钮实现此方法?

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

// Instance of Facebook Class
private Facebook facebook; 

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

3 个答案:

答案 0 :(得分:4)

您可以使用LoginManager完成此操作,而无需使用LoginButton。

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

callbackManager = CallbackManager.Factory.create();

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

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

    }

    @Override
    public void onCancel() {

    }

    @Override
    public void onError(FacebookException error) {
    }
});

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

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

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

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

答案 1 :(得分:3)

第一步是在我的xml文件中包含内置的facebook按钮,但将其可见性设置为“已消失”,以便用户无法看到它。

<com.facebook.widget.LoginButton
        android:id="@+id/authButton"
        android:visibility="gone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        />

在我的主要活动中,我然后定义了隐藏的facebook按钮和我想要使用的按钮

fbLoginButton = (Button) findViewById(R.id.authButton); //built in facebook button
customButton = (Button) findViewById(R.id.customButton); //my custom button

然后在自定义按钮的onClickListener中,我在facebook按钮上使用了“.performClick”方法

customButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        fbLoginButton.performClick();
    }
});

这对我来说就像一个魅力。希望这可以帮助某人。

@Rich Luick tnx。

答案 2 :(得分:0)

我为make facebook按钮自定义提供一步一步的代码。 check code here

你只需制作一个框架布局。