在xamarin android中为facebook sdk生成密钥哈希

时间:2014-07-10 05:18:36

标签: xamarin xamarin.android xamarin-studio

我想在我的xamarin android应用程序中使用facebook工具登录。

有谁能告诉我,如何为xamarin android生成密钥哈希  我在developers.facebook.com上看到了这个以生成密钥哈希

keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | openssl sha1 -binary | openssl base64

谁能告诉我,这个命令中每个单词的含义是什么?  应该给这些变量赋予什么值?比如什么是别名?我在哪里可以找到这个和其他。  由于我是Facebook开发的新手,我不知道所有这些条款。如果有人给我任何这样的例子,那将是很好的。  请帮我。  我完全被困在这里。

5 个答案:

答案 0 :(得分:4)

尝试

keytool -exportcert -alias androiddebugkey -keystore ~/.local/share/Xamarin/Mono\ for\ Android/debug.keystore | openssl sha1 -binary | openssl base64

默认密钥库密码为 android

答案 1 :(得分:0)

你可以通过委托' keytool来获得keytool和openssl的参数列表?'或者' keytool -help'并弄清楚一切:

Commands:
 -certreq            Generates a certificate request
 -changealias        Changes an entry's alias
 -delete             Deletes an entry
 -exportcert         Exports certificate
 -genkeypair         Generates a key pair
 -genseckey          Generates a secret key
 -gencert            Generates certificate from a certificate request
 -importcert         Imports a certificate or a certificate chain
 -importpass         Imports a password
 -importkeystore     Imports one or all entries from another keystore
 -keypasswd          Changes the key password of an entry
 -list               Lists entries in a keystore
 -printcert          Prints the content of a certificate
 -printcertreq       Prints the content of a certificate request
 -printcrl           Prints the content of a CRL file
 -storepasswd        Changes the store password of a keystore

至于使用示例:我刚刚创建了一个:

C:\Program Files\Java\jdk1.8.0_131\bin>keytool -exportcert -alias androiddebugkey -keystore "C:\\Users\\.android\\debug.keystore" | "C:\\OpenSSL\\bin\\openssl" sha1 -binary |"C:\\OpenSSL\bin\\openssl" base64

你需要在你的CMD的java bin路径中:

  

C:\ Program Files \ Java \ jdk1.8.0_131 \ bin>

并输入以下命令:

  

keytool -exportcert -alias androiddebugkey -keystore" C:\ Users \ .android \ debug.keystore" | " C:\ OpenSSL的\ BIN \ OpenSSL的" sha1 -binary |" C:\ OpenSSL \ bin \ openssl" BASE64

确保在所需路径中安装了openssl,但分别修改了命令中的路径。

顺便说一下。 openssl不再生成Windows安装程序二进制文件,因此您需要从第三方获取它

Here For Example

答案 2 :(得分:0)

试试这个。

视窗: keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

Mac OSX: keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

答案 3 :(得分:0)

您可以通过两个步骤来获取哈希键。一种是通过命令提示符。另一个是通过编码。通过命令提示符的哈希键仅在第一次使用时有效。我不知道原因我也有同样的问题。所以我以编程方式尝试了它。

        try
        {

            PackageInfo info = PackageManager.GetPackageInfo(
                        "com.example.packagename",
                        PackageInfoFlags.Signatures);
            foreach (var signature in info.Signatures)
            {
                MessageDigest md = MessageDigest.GetInstance("SHA");
                md.Update(signature.ToByteArray());
                Log.Debug("KeyHash:", Base64.EncodeToString(md.Digest(), Base64.Default));
                var s = Base64.EncodeToString(md.Digest(), Base64.Default);
            }
        }
        catch (NameNotFoundException e)
        {

        }
        catch (NoSuchAlgorithmException e)
        {

        }

答案 4 :(得分:0)

在Windows笔记本电脑上,我必须分两步执行操作以获取正确的哈希值(可能是由于keytool和openssl版本的差异):

  1. 将证书导出到文件
  2. 计算文件上的哈希值

在命令行(或批处理文件)中运行:

    "c:\Program Files\Java\jdk1.8.0_161\bin\keytool.exe" -exportcert -keystore "%LocalAppData%\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android -file _temp.cert
    openssl sha1 -binary _temp.cert | openssl base64
    del _temp.cert