Facebook登录我的Android应用程序在发布apk中运行良好,但在Play商店发布相同的apk后无法正常工作

时间:2017-07-29 10:51:09

标签: android facebook android-facebook

在我的Android应用程序中,我使用了facebook登录。这是我第一次使用它。

登录功能在发布apk文件中正常工作。另外,我使用keytool,openssl生成密钥哈希: -

keytool -exportcert -alias "MyAppAlias" -keystore "Path to keystore" | 
openssl sha1 -binary | openssl base64

我在Facebook开发者帐户的应用设置中添加了生成的密钥哈希。现在,当我生成签名apk时,Facebook登录工作正常,但在Play商店发布相同的apk后,Facebook登录无法正常工作,它只是重定向到调用它的活动(我的应用程序' s登录活动)没有任何崩溃或没有响应消息。

感谢。

6 个答案:

答案 0 :(得分:21)

最后,我解决了这个问题。

此问题背后的原因 在发布应用程序到Play商店时,我从Google Play进行了APP SIGNING,因此在那里创建了新的SHA-1密钥。

要查看此密钥,请转到Google Play控制台,选择您的应用,然后版本管理 - >应用程序签名

在这个页面上,我在#34; App签名证书下获得了新的SHA-1密钥 "

enter image description here

因此,重点是Google Play Signing会创建一个新证书,如上图所示。

在Facebook开发者帐户中,我们需要添加由密钥库生成的密钥哈希值。但在这种情况下,我们还需要添加Key hash对应这个APP SIGNING证书。现在问题是,如何获得此证书/ SHA-1指纹的密钥哈希值?

如何从Google Play APP SIGNING的SHA-1键创建Key Hash?

要从SHA-1密钥生成密钥哈希,请执行一个小型Java程序

// GOOGLE PLAY APP SIGNING SHA-1 KEY:- 65:5D:66:A1:C9:31:85:AB:92:C6:A2:60:87:5B:1A:DA:45:6E:97:EA
            byte[] sha1 = {
                    0x65, 0x5D, 0x66, (byte)0xA1, (byte)0xC9, 0x31, 0x85, (byte)0xAB, (byte)0x92, (byte)0xC6, (byte)0xA2, 0x60, 0x87, 0x5B, 0x1A, (byte)0xDA, 0x45, 0x6E, (byte)0x97, (byte)0xEA
            };
            System.out.println("keyhashGooglePlaySignIn:"+ Base64.encodeToString(sha1, Base64.NO_WRAP));

输出: -

keyhashGooglePlaySignIn: ZV1dkSgxvc2p4aCtFx9tcaQr8N4=

复制此密钥哈希并将其粘贴到您应用的Facebook开发人员帐户设置中。这就是我的问题得到解决的方法。

感谢所有开发者的评论。 :)

答案 1 :(得分:3)

在此处复制粘贴SHA1键以减少所有头痛。Link 从内部将Hex转换为Base 64。

答案 2 :(得分:1)

我改善了@vChamps的答案。只需将SHA1字符串传递给函数

即可
public void hashFromSHA1(String sha1) {
    String[] arr = sha1.split(":");
    byte[] byteArr = new  byte[arr.length];

    for (int i = 0; i< arr.length; i++) {
        byteArr[i] = Integer.decode("0x" + arr[i]).byteValue();
    }

    Log.e("hash : ", Base64.encodeToString(byteArr, Base64.NO_WRAP));
}

答案 3 :(得分:1)

echo SHA1_here | xxd -r -p | openssl base64

与上面的代码完成相同的工作。

答案 4 :(得分:1)

要根据 Google Play 登录获取哈希值,只需将 Play Console 中的 SHA-1 密钥转换为 base64,然后将它们粘贴到 Developer Facebook android 配置中。 您可以使用此在线转换器:http://tomeko.net/online_tools/hex_to_base64.php?lang=en

答案 5 :(得分:0)

科特琳代码:

        import android.util.Base64
        import android.util.Log

        fun hashFromSHA1(sha1: String) {
            val arr = sha1.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
            val byteArr = ByteArray(arr.size)

            for (i in arr.indices) {
                byteArr[i] = Integer.decode("0x" + arr[i])!!.toByte()
            }

            Log.e("hash : ", Base64.encodeToString(byteArr, Base64.NO_WRAP))
        }