简体   繁体   English

Facebook SDK登录回调从未称为android

[英]Facebook SDK Login callback is never called android

I am using the following code snippet in my Android app to allow users to login into my app using Facebook: 我在Android应用程序中使用以下代码段,以允许用户使用Facebook登录到我的应用程序:

public class FacebookLoginActivity extends AppCompatActivity {
private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    initCallback();
    LoginManager.getInstance().logInWithReadPermissions(this, FacebookUtils.requiredPermissions);
}

private void initCallback() {
    callbackManager = CallbackManager.Factory.create();
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                   AccessToken.setCurrentAccessToken(loginResult.getAccessToken());

                @Override
                public void onCancel() {

                }

                @Override
                public void onError(FacebookException exception) {

                }

            }
    );
}

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

} }

However, it's not working because the defined Callback methods are never called, I am shown the facebook loader and I am reaching onActivityResult but the callbacks are never called, does anyone know what might be the problem? 但是,它不起作用,因为从未调用已定义的Callback方法,向我显示了Facebook加载器,并且达到了onActivityResult,但从未调用过回调,有人知道这可能是什么问题吗? thanks in advance. 提前致谢。

Try below code: 试试下面的代码:

public class FacebookLoginActivity extends AppCompatActivity {
private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    callbackManager = CallbackManager.Factory.create();
    initCallback();

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new OnClickLinew View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // add this on facebook sign in button click listener
            LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile","email"));
        }
    });
}

private void initCallback() {
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                   AccessToken.setCurrentAccessToken(loginResult.getAccessToken());

                @Override
                public void onCancel() {

                }

                @Override
                public void onError(FacebookException exception) {

                }

            }
    );
}

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

Try this steps. 试试这个步骤。

Create new Variable for LoginButton define it Globally. LoginButton创建新VariableLoginButton定义它。

private LoginButton btnLogin;

Then on your onCreate add this Code. 然后在您的onCreate添加此代码。

btnLogin.setReadPermissions(Arrays.asList("public_profile, email, user_birthday"));
callbackManager = CallbackManager.Factory.create();

Also change this. 也改变这个。

LoginManager.getInstance().registerCallback(callbackManager,

To this. 对此。

btnLogin.registerCallback(callbackManager,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM