这是我的代码:
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令牌= AccessToken.getCurrentAccessToken();
答案 0 :(得分:1)
检查登录状态
布尔值 isLoggedIn = accessToken != null && !accessToken.isExpired();
然后您可以稍后执行实际登录,例如在自定义按钮的 OnClickListener 中:
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
答案 1 :(得分:0)
在快速研究中,您必须实现新方法来验证facebook SDK 4.0上的活动会话,例如:
尝试查看this post,我想它可以帮到你