这是我的代码:
public class LocationDetailActivity extends ActionBarActivity {
private CallbackManager mCallBackManager;
private FacebookCallback<LoginResult> mCallBack;
private ImageView mBtnBack;
AccessToken token;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location_detail_layout);
FacebookSdk.sdkInitialize(getApplicationContext());
share = (ImageButton) findViewById(R.id.imageShare);
token = AccessToken.getCurrentAccessToken();
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(token == null) {
final Dialog dialog = new Dialog(LocationDetailActivity.this);
dialog.setContentView(R.layout.share_custom_dialog);
dialog.setTitle("Login as:");
dialog.show();
mCallBackManager = CallbackManager.Factory.create();
mCallBack = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile = Profile.getCurrentProfile();
if(profile!=null){
dialog.cancel();
ShareDialog shareDialog = new ShareDialog(LocationDetailActivity.this);
if(shareDialog.canShow(ShareLinkContent.class)){
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com"))
.build();
shareDialog.show(content);
}
}
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
};
LoginButton loginButton = (LoginButton)dialog.findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.registerCallback(mCallBackManager, mCallBack);
}
else if(token != null){
ShareDialog shareDialog = new ShareDialog(LocationDetailActivity.this);
if(shareDialog.canShow(ShareLinkContent.class)){
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com"))
.build();
shareDialog.show(content);
}
}
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallBackManager.onActivityResult(requestCode, resultCode, data);
}
}
我想检查用户是否已经从 Facebook 的应用程序登录。如果他们不这样做,我的应用程序将显示带有登录按钮的自定义对话框。否则,我的应用程序将显示共享对话框,但当我点击我的按钮时,即使我登录了 Facebook,也会始终显示自定义对话框。
更多信息: AccessToken token = AccessToken.getCurrentAccessToken();
最佳答案
检查登录状态
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
然后您可以稍后执行实际登录,例如在自定义按钮的 OnClickListener 中:
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
关于android - 如何检查用户已经登录 android (Facebook SDK 4.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30046939/