【问题标题】:How to create the signature Hash code for integrating facebook in an android Application?如何创建签名哈希码以将 facebook 集成到 android 应用程序中?
【发布时间】:2011-11-09 06:42:17
【问题描述】:

我正在将 facebook 集成到我的应用程序中。但是我在获取 Android 应用程序的哈希码时停下来了。获取 Facebook 哈希码的链接:Here

我在推荐提示中使用此语法,但出现错误,例如 keytool 无法识别为内部或外部命令:

D:\Users\Priyadarshan\.android>keytool -exportcert -alias androiddebugkey -keyst
ore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
'keytool' is not recognized as an internal or external command,
operable program or batch file.

请帮助我。 谢谢。

已编辑:

看过之后:This Link.

我已经完成了如下操作,但仍然出现错误:

D:\Users\Priyadarshan>cd C:\Program Files\Java\jre7\bin\keytool -exportcert -ali
as androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary |
openssl base64
'openssl' is not recognized as an internal or external command,
operable program or batch file.

经过一些指南,我已经完成了如下操作,但仍然出现错误:

D:\Users\Priyadarshan>cd C:\Program Files\Java\jre7\bin\keytool -exportcert -ali
as androiddebugkey -keystore ~/.android/debug.keystore | D:\Users\Priyadarshan\o
penssl-0.9.8k_WIN32\bin\openssl sha1 -binary | D:\Users\Priyadarshan\openssl-0.9
.8k_WIN32\bin\openssl base64
The system cannot find the path specified.
2jmj7l5rSw0yVb/vlWAYkK/YBwk=

【问题讨论】:

  • 删除命令中的 cd。您不想更改目录,只需提供 keytool.exe 的完整路径
  • @brianestey: 如果我删除了 cd 那么它会说 "C:\Program" 不是内部或外部命令。
  • 这就是为什么你需要在完整路径“C:\Program Files\...”周围加上引号
  • @brianestey:谢谢亲爱的。我得到了答案并得到了解决方案。谢谢。

标签: android android-emulator command android-2.2-froyo facebook-android-sdk


【解决方案1】:

我在不同的目录中有 keytool:

C:\Program Files (x86)\Java\jre6\bin

您可以将 keytool 所在的路径添加到 PATH 环境变量中,也可以在完整路径周围使用引号,例如

D:\Users\Priyadarshan.android>"C:\Program Files\etc\keytool.exe" -exportcert 等

不要因为路径中的空格而忘记引号!

【讨论】:

    【解决方案2】:

    keytool 自带 JDK。

    假设您使用默认设置安装了 JDK,您会在C:\Program Files\Java\jdk1.6.0_23\bin\keytool.exe找到它

    【讨论】:

      【解决方案3】:

      从 facebook 文档获取哈希码的编码器只需在模拟器中运行即可

         try {
                  PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
                  for (Signature signature : info.signatures) {
                      MessageDigest md;
      
                          md = MessageDigest.getInstance("SHA");
                          md.update(signature.toByteArray());
                          String something = new String(Base64.encode(md.digest(), 0));
                         //Toast.makeText(StartingPlace.this, something,
                              //  Toast.LENGTH_LONG).show();
                          Log.e("hash key", something);
              } 
              }
              catch (NameNotFoundException e1) {
                  // TODO Auto-generated catch block
                  Log.e("name not found", e1.toString());
              }
      
                   catch (NoSuchAlgorithmException e1) {
                      // TODO Auto-generated catch block
                       Log.e("no such an algorithm", e1.toString());
                  }
                   catch (Exception e1){
                       Log.e("exception", e1.toString());
                   }
              //code to get hash code
      

      【讨论】:

        【解决方案4】:

        您可以从此link 使用 Open SSL,
        这个问题在这个post中讨论过

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多