验证已登录Facebook并打开活动

时间:2016-03-20 17:05:18

标签: android facebook facebook-login

我遇到一个问题,即用户在打开应用时看到的第一个活动中有一个Facebook登录按钮。问题是,如果他们已经登录到Facebook,我会收到一条消息,表示我已经登录,但我只能选择退出,而不是继续使用该应用程序。所以基本上我每次都要注销并重新登录以实际使用该应用程序。所以它说我已经登录了,一切都很好,但我无法继续我的应用程序的下一个活动。我不确定这是否有意,我没有实现某些内容,或者这是一个问题。这是我的代码:

我的onCreate方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    setContentView(R.layout.main_login);
    callbackManager = CallbackManager.Factory.create();

登录按钮的设置:

loginButton.setReadPermissions(Arrays.asList("public_profile, email, user_friends"));
}
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    Intent myIntent = new Intent(getApplicationContext(), myActivity.class);

                    accessToken = AccessToken.getCurrentAccessToken();

                    GraphRequest request = GraphRequest.newMeRequest(
                            accessToken,
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(
                                        JSONObject object,
                                        GraphResponse response) {
                                    Log.v("LoginActivity", response.toString());
                                }
                            }

                    );
                    Bundle loginBundle = new Bundle();
                    loginBundle.putString("userInfo", "id, first_name, last_name, email");
                    request.setParameters(loginBundle);
                    request.executeAsync();

                    myIntent.putExtras(loginBundle);

                    startActivity(myIntent);

                    finish();
                }

                @Override
                public void onCancel() {
                    // nothing yet
                }

                @Override
                public void onError(FacebookException exception) {
                    // nothing yet
                }
            });

onActivityResult:

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
}

2 个答案:

答案 0 :(得分:0)

您可以检查用户是否已登录并直接进入您的活动

  if (AccessToken.getCurrentAccessToken()!=null){
        Intent myIntent = new Intent(getApplicationContext(), myActivity.class);
        startActivity(myIntent);
    }

答案 1 :(得分:0)

尝试这样,一旦用户完成登录就在共享首选项中有一个布尔标志将标志设置为true,同时打开应用程序检查该标志打开登录活动只有boolean标志为false,否则打开主要活动。
并为用户提供登出菜单等选项。