Facebook要求再次登录Android

时间:2015-06-10 11:20:06

标签: android facebook parse-platform

这是我的代码,它使用Parse通过Facebook登录用户。

public void onFacebookLoginClick(View v) {
    ParseUser currentUser = ParseUser.getCurrentUser();
    if ((currentUser != null) && ParseFacebookUtils.isLinked(currentUser)) {
        Log.d("onFacebookLoginClick", "Already signed in");
        showHomeActivity();
    } else {
        progressDialog = ProgressDialog.show(LoginActivity.this, "", "Logging in...", true);

        List<String> permissions = Arrays.asList("public_profile", "email");
        // NOTE: for extended permissions, like "user_about_me", your app must be reviewed by the Facebook team
        // (https://developers.facebook.com/docs/facebook-login/permissions/)

        ParseFacebookUtils.logInWithReadPermissionsInBackground(this, permissions, new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException err) {
                progressDialog.dismiss();
                if (user == null) {
                    Log.d("Facebook", "Uh oh. The user cancelled the Facebook login.");
                } else if (user.isNew()) {
                    Log.d("onFacebookLoginClick: ", "User signed up and logged in through Facebook!");
                    showHomeActivity();
                } else {
                    Log.d("onFacebookLoginClick: ", "User logged in through Facebook!");
                    showHomeActivity();
                }
            }
        });
    }
}

问题是,用户第一次登录(OK!),然后再次打开登录对话框。

注意:当我关闭对话框时,它会带我进入下一个活动。但是为什么它可以两次显示登录对话框?

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题来实现这一点。我通过让我的代码在尝试启动活动之前休眠几秒钟来解决它。这可能是错误。

- 为什么我得出这个结论 -

我发现ParseFacebookUtils中的loginCallBack需要几秒钟才能返回其结果代码/解析用户。

当我启动活动时没有返回任何数据,并且活动被配置为在没有用户登录的情况下启动登录活动。这使得看起来好像代码在第一次尝试时没有登录。我相信Parse Facebook逻辑比常规解析登录逻辑慢一点。

第二次运行代码(单击按钮)时,回调已经与解析用户一起返回,并且无需返回即可成功启动活动。