如何在Mac上为Facebook SDK生成密钥哈希?

48
我正在尝试获取用于将Facebook集成到我的Android应用程序中的密钥哈希。但是在网络上,我找不到在MAC OS X上执行此操作的方法,只有Windows的方法。
如果有人能告诉我正确的获取密钥哈希的方法,我将非常感激。
谢谢!
6个回答

184
我使用以下步骤在Facebook中为我的应用程序生成密钥哈希:(我使用的是Mac OSX 10.8
  1. 首先打开终端(在Windows中打开命令提示符)。
  2. 在终端中导航到存储Android debug.keystore的目录。
  3. 大多数情况下,它将位于“/Users/user_name/.android/”下(在Windows下将位于C:\Documents and Settings\.android)。
  4. 一旦您进入“.android”目录,请运行以下命令。

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

  5. 当提示输入密码时,键入android并按Enter

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

参考:在Android应用程序中集成Facebook登录


提示:编译 custom.keystore 时,请记得将密码更改为您创建 custom.keystore 时设置的密码。 - Diolor
1
你好Arun,很久没有回复了。我刚发布了一个Android应用程序,并且它具有Facebook登录属性。那么,你所采取的密钥哈希方式是发布密钥哈希还是只能在开发模式下使用? - saner
Saner,很抱歉回复晚了。我停止了5年的Android开发,无法及时回复。 - Arun G

26
请按照以下步骤在 Mac 上找到 debug.keystore 并为 Android 开发生成 key hash
  1. 打开终端

  2. 输入cd ~/.android并按回车键以进入.android目录

  3. 如果您想在 Finder 中打开.android目录,请输入open .并按回车键。然后.android目录将在 Finder 中打开,您可以在其中找到debug.keystore。如果您不想打开.android目录,只想生成密钥哈希,则跳过此步骤,并遵循#4

  4. 在已经进入.android目录的终端中输入:

    keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64

    并按回车键。

  5. 系统会要求您输入密码。请输入android作为密码,然后按回车键。接下来您将获得以“=”结尾的密钥哈希。

  6. 复制密钥哈希,进入 Facebook 应用设置页面并保存更改。


8

我以前从未在Mac上操作过,但是以下是一些建议:

1. 您需要安装OpenSSL。在Windows中,我只需解压缩zip文件,然后将包括openssl.exe在内的三个文件复制到jdk的bin文件夹中(其中keytool位于此处),但不知道在Mac上如何操作。

2. 将要获取密钥哈希的keystore文件复制到jdk的bin文件夹中。我的keystore是debug.keystore(因为我还在测试阶段,不想使用主要的keystore)。

3. 使用命令行进入jdk的bin文件夹(在Windows中,我只需运行 -> cmd -> 输入cd %JAVA_HOME%)。

4. 输入以下命令:


keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64

对于我的情况(debug.keystore):


keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
然后输入debug.keystore的密码:android(如果没有密码,则仍会生成密钥哈希,并且与密码相同,不知道为什么)。

您将获得一些以“=”字符结尾的字符串。转到应用程序设置 -> 移动 -> 将该密钥哈希(包括“=”)填入Android密钥哈希中。


Linux和Mac在相同的路径下存储debug.keystore:~/.android/debug.keystore。如果您想创建新的密钥库,请按照此链接中的说明进行操作http://developer.android.com/guide/publishing/app-signing.html。 - Anh Tuan
你的回答以“永远不要在Mac上做”开始。用户明确要求在Mac OS上寻求帮助。你至少应该解释一下为什么你认为他在Mac上永远不应该这样做(顺便说一句,事实并非如此,Mac上生成密钥没有问题)。 - Yacc
@yacc 很抱歉我的英语不好让你误解了。我的意思是我从未在 Mac 上这样做过,但我认为在 Mac 上生成密钥的方式通常与在 Windows 上相同,所以我给了他答案。 - Anh Tuan
@AnhTuan 你需要指定实际位置。keytool -exportcert -alias androiddebugkey -keystore“%USERPROFILE%.android\debug.keystore”| C:\openssl\bin\openssl.exe sha1 -binary | C:\openssl\bin\openssl.exe base64,而且你的安装说明不够清晰。请参见https://dev59.com/bW435IYBdhLWcg3woRnG中得票最高的答案以进行更正。 - iOSAndroidWindowsMobileAppsDev

4

说实话,这不是一个答案,只是给所有遇到类似问题的访问者一个提示。

可以使用纯Java工具android-fb-keytool来获取密钥哈希,无需JDK和OpenSSL。您可以检出并构建源代码。


修复了一个损坏的链接。 - Dmitry

1
在Mac上生成密钥哈希,请按照以下简单步骤操作。
  1. 打开终端
  2. 粘贴下面的命令(步骤3),然后按回车键
  3. keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
  4. 输入密码:Android
  5. 它将给你一个密钥哈希(例如MibyjIEJWghOLquRdk9esClXHWH=)
  6. 这将为您提供一个调试密钥哈希。同样,我们可以使用相同的过程生成发布密钥哈希。只需要更改我们的密钥库路径和密码。

愉快的编码。谢谢


-28

是的,谢谢 :) 我也想到了并编辑了帖子 :) - Stefan H Singer
抱歉,我的错误。我想说的是我需要我的应用程序签名,这样我才能将Facebook集成到其中!Keytool已经集成在JRE中,但我不知道如何使用它来为FB生成我的应用程序签名! - ady
我敢说它们只适用于Mac。你必须稍微改动一下才能在Windows上运行,但既然你在Mac上,应该没问题。 - Stefan H Singer
我是MAC的新手,请帮我一下:我必须使用终端并定位我的Android SDK,然后在其位置执行这些命令:D。我知道我正在寻求的可能很愚蠢,但我真的不会操作:D。谢谢! - ady
是的,你必须使用终端。如果你有关于此的具体问题,那么这些问题可能不应该在SO上,因为它们并不是纯粹的编程问题。至少它们应该是单独的问题。请随意将你的问题标记为已回答,并发布新的关于如何在Mac OS X上使用终端的问题(但可能不适合在stackoverflow上提问)。祝你好运! - Stefan H Singer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接