Android Facebook登录API在安装Facebook App时直接进入onCancel()

时间:2017-05-24 04:07:20

标签: android facebook-graph-api facebook-login facebook-android-sdk

所以我已经在我的Android应用程序中实现了Facebook登录一段时间了,它已经好几个月了。

当我将SDK版本更新为最新版本(4.22.0)时,问题就出现了。在此之后,单击Facebook登录按钮只会导致短暂的登录尝试,然后没有任何内容。从日志中我可以看到FacebookCallback中的onCancel()正在被调用,但就是它。

卸载Facebook应用程序时,一切正常。我通过Web视图登录,然后我可以继续(调用onSuccess())。

我已经尝试恢复到之前使用的SDK版本,但没有运气。我已经检查过我的KeyHashes是否匹配(包括调试和发布)Facebook Developer Dashboard上的内容,它确实如此。我的应用ID也匹配。'

我知道我在尝试登录之前已经注销了,因为我正在使用LoginManager强制注销。

这很奇怪。我使用以下代码生成我的KeyHash:

try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "***.*****.************",
                    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 (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }

3 个答案:

答案 0 :(得分:0)

  

你需要有一个签名的aPK KeyHash,所以,在你的设备上运行签名的APk和签名的APK,并从调试日志中获取签名的keyHash。将密钥哈希更新到你的facebook开发者控制台。

答案 1 :(得分:0)

尝试将该代码用于fackbook哈希密钥生成。

 try {
            PackageInfo info = getPackageManager().getPackageInfo("enter your package", 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 (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }

答案 2 :(得分:0)

我使用以下步骤在Facebook中为我的应用生成一个Key Hash:

  1. 首先在mac中打开一个终端(在Windows中打开命令提示符)。
  2. 在终端中导航到存储Android debug.keystore的目录。主要在Windows中,它位于“/Users/user_name/.android/”下,在Windows中为C:\ Documents and Settings.android)。

  3. 在mac中 - 键入cd~ / .android并按Enter键转到.android目录

  4. 进入“.android”目录后,运行以下命令获取调试密钥。 keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

  5. 使用相同的步骤获取Release键。只需使用以下命令替换该命令,并使用您的发布密钥别名。 keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | “PATH FOR openssl.exe”sha1 -binary | openssl base64

  6. 当提示您输入密码时,请键入android并按Enter键

  7. 复制以“=”结尾的终端中打印的值,并将其粘贴到Facebook的Key Hash字段中。然后单击“保存更改”按钮。