我正在使用facebook widget的LoginButton来登录facebook。
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this,Arrays.asList("public_profile", "user_friends"));
}
});
我有两个问题 -
1.当我点击登录按钮时,Facebook登录对话框会打开两次。所以在我提供用户电子邮件和密码后第一次登录后,它会显示另一个登录对话框,我必须关闭它。
2.登录后移动到下一个屏幕,如果我回到登录界面,它会在登录按钮中显示退出文本,这是理想的。但是当我点击它时,它会打开登录和注销对话框。理想上它应该只打开注销对话框。如果用户已经登录,我该如何阻止执行LoginManager.getInstance().logInWithReadPermissions(MainActivity.this,Arrays.asList("public_profile", "user_friends"));
。
以下是我正在使用的代码
public class MainActivity extends AppCompatActivity {
private LoginButton mLoginButton;
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);
mLoginButton = (LoginButton) findViewById(R.id.login_button);
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(accessToken==null) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "user_friends"));
}
}
});
mLoginButton.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
答案 0 :(得分:0)
在loginButton上删除setOnClickListener,在Login Button上只注册RegisterCallBack,它将处理所有这些,你不需要setOnClickListener用于loginButton。它被调用两次,因为你已经设置了setOnClickListener和registerCalBack。
CallbackManager callbackManager = CallbackManager.Factory.create();
loginButton = (LoginButton) findViewById(R.id.fbLogin);
loginButton.setReadPermissions(Arrays.asList("user_status,public_profile,user_friends,email,user_birthday"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
您可以通过
检查用户是否已登录AccessToken accessToken = AccessToken.getCurrentAccessToken();
if (accessToken != null) {
}
return accessToken != null;