使用Facebook SDK生成应用程序的哈希密钥

32
我正在使用 Facebook SDK 登录我的应用程序。 该应用在 HTC 设备上运行良好。 如果三星设备没有预先安装 Facebook 应用程序,则该应用也能正常工作。
但是,如果手机上已经有 Facebook 应用程序,然后用户安装我的应用程序,则用户永远无法登录。据我所知,我认为这可能是单点登录的问题,而且我认为这与生成正确的应用程序哈希密钥有关,并且在 Facebook 应用程序中使用哈希密钥来登录移动应用程序。
请指导我如何创建哈希密钥。我正在运行 ubuntu 10.4。
当我在终端中运行此命令:-
keytool -exportcert -alias <your keystore alias name>.keystore -keystore ~/.android/<your keystore name>.keystore | openssl sha1 -binary | openssl base64

尽管给了哈希键,但我从未被提示输入密码。


这里可以得到你的答案,它也帮了我大忙。https://dev59.com/bW435IYBdhLWcg3woRnG#12405323 - Ashher Alam
生成哈希密钥简单方法在此 - karthik
我已经生成了密钥哈希,但不知道在哪里放置该密钥,请指导一下?我在Ubuntu上运行Android Studio。 - Apurva
你找到错误了吗?具体是哪个命令帮助了你?我也遇到了同样的问题。 - Shruti
6个回答

62

尝试这个:

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

我希望你能成功。我刚刚检查了它,我得到了要求输入密码的提示。


46

您可以使用此代码块生成哈希键。将此代码块放入onCreate()方法中。

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "Your package name", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("Your Tag", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

对我来说完美地工作了...我也尝试了下面的命令以获得相同的结果:keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 - Vinay
2
这就是它。记得用你的包名替换“Your package name” ;) - OWADVL
3
这段代码在debug和release模式下生成的哈希密钥是否相同? - Kostadin
我已经生成了密钥哈希,但不知道在哪里放置该密钥,请指导一下?我在Ubuntu上运行Android Studio。 - Apurva

4
如果没有提示密码,那么首先打开终端并键入以下命令:

如果它不提示您输入密码,则首先打开终端并键入:

sudo apt install openjdk-8-jre-headless

然后按照常规方式操作,只需输入以下内容:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

密码为:android,您已完成。

此答案仅用于调试目的,发布时请使用您的.jks文件生成哈希密钥。


运行得非常好!! - Shruti
谢谢,我刚刚转换到Ubuntu系统,已经花了几个小时来尝试解决这个问题。 - Ahmad Magdy

3

只需输入以下命令:

keytool -exportcert -alias androiddebugkey -keystore debug.keystore

输入按键密码或Android或Enter

在这里,您需要转到目录结构,直到“.android”,然后运行此命令。一般情况下,路径为C:\Users\User-name\.android>


我已经生成了密钥哈希,但不知道在哪里放置该密钥,请指导一下?我在Ubuntu上运行Android Studio。 - Apurva

2
请检查您的环境中的三个部分。
  1. "debug.keystore" 文件在哪里?

    使用命令 / -name "debug.keystore" 查找

    如果找不到,请检查您的Eclipse或ADT。

  2. 别名 是什么?

    运行命令 keytool -list -v -keystore "PATH_TO_DEBUG_KEYSTORE"

  3. 检查是否安装了 openssl

    命令:openssl

如果一切准备就绪,它会提示输入密码。


我已经生成了密钥哈希,但不知道在哪里放置该密钥,请指导一下?我在Ubuntu上运行Android Studio。 - Apurva
在输入发布APK的密码后,显示了中文语言,请帮忙解决。 - Harsha

0
C:\openssl\bin>keytool -exportcert -alias aliasName -keystore "C:\Users\s\.android\debu
g.keystore" | "C:\openssl\bin\openssl" sha1 -binary | "C:\openssl\bin\openssl" b
ase64
Enter keystore password:  android
GEYtOJobR4NzuxX4iOl/yR6sla4=

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