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



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

发现一个有同样问题的人在这里Facebook登录无法正常工作(解析),但他的答案对我不起作用。

        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. 我没有正确获取密钥哈希。

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH |OpenSSL SHA1 -二进制 |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应用程序ID和应用程序密钥。您可以转到Facebook>"设置>身份验证"进行操作。

我希望这可以帮助某人。

相关内容

最新更新