如何检查已登录android的用户(Facebook SDK 4.0)

时间:2015-05-05 07:42:18

标签: android facebook

这是我的代码:

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();

2 个答案:

答案 0 :(得分:1)

检查登录状态

<块引用>

布尔值 isLoggedIn = accessToken != null && !accessToken.isExpired();

然后您可以稍后执行实际登录,例如在自定义按钮的 OnClickListener 中:

<块引用>

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

答案 1 :(得分:0)

在快速研究中,您必须实现新方法来验证facebook SDK 4.0上的活动会话,例如:

  • 初始化了您的Facebok SDK (我猜您已经这样做了)
  • 实施 AccessTokenTracker

尝试查看this post,我想它可以帮到你