首页 文章

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

提问于
浏览
0

所以我已经在我的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

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

  • 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) {
    
            }
    
  • 0

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

    • 首先在mac中打开一个终端(在Windows中打开命令提示符) .

    • 在终端中导航到存储Android debug.keystore的目录 . 主要在Windows中它位于“/Users/user_name/.android/”下,而在Windows中则是C:\ Documents and Settings.android) .

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

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

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

    • 当提示您输入密码时,键入android并按Enter键

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

相关问题