[英]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
创建新Variable
以LoginButton
定义它。
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.