使用Parse登录Facebook总是在user.isNew()Android中返回false

时间:2014-12-31 12:05:08

标签: android facebook facebook-graph-api login

我使用Parse在Android登录时遇到问题。 一切正常,但我总是让用户通过Facebook登录。

我在这里找到了一个有同样问题的人Facebook Login not working properly (Parse),但他的回答对我不起作用。

        List<String> permissions = Arrays.asList("email");
        ParseFacebookUtils.logIn(permissions, getActivity(), new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException err) {

                if (user == null) {
                    Log.d("WelcomeMainFragment",
                            "Uh oh. The user cancelled the Facebook login.");

                } else if (user.isNew()) {
                    Log.d("WelcomeMainFragment",
                            "User signed up and logged in through Facebook!");


                } else {
                    Log.d("WelcomeMainFragment",
                            "User logged in through Facebook!");
                }
            }
        });

user.isNew()总是返回false!即使我的应用程序中有新的facebook帐户。 我需要使用isNew()方法才能在该代码块中第一次创建解析用户。

非常感谢。

1 个答案:

答案 0 :(得分:0)

经过一番研究,我发现了问题所在。 基本上我有两个问题:

  1. 我没有正确获取密钥哈希。
  2.   

    keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore   YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

    上面做的我得到了错误的密钥哈希。所以我鼓励你用这段代码来解决它:

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.package.name", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }
    

    您必须在调试和生产中执行它才能获得两个密钥。

    1. 最重要的问题是我必须在Parse上允许Facebook身份验证,并包含Facebook app id和app secret。你可以这样做去设置&gt;身份验证&gt;主页。
    2. 我希望能帮助别人。