如何使用Android中的Keytool为W7 32bit生成Key Hash(Facebook)

时间:2012-11-19 05:19:33

标签: android facebook

我尝试生成用于在我们的应用中集成Facebook的Keyhash,但是当我通过cmd提示生成keyhash时,它无法生成。

C:\Users\DON\.android>keytool -exportcert -alias androiddebugkey -keystore ~/.an
    droid/debug.keystore | openssl sha1 -binary | openssl base64
  

'keytool'未被识别为内部或外部命令,       可操作程序或批处理文件。

我使用的另一个命令是:

C:\Program Files\Java\jdk1.6.0_20\bin>keytool -exportcert -alias androiddebugkey
     -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
  

'openssl'未被识别为内部或外部命令,           可操作程序或批处理文件。

有什么问题?

5 个答案:

答案 0 :(得分:12)

使用此命令首先下载此文件http://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip。然后解压缩文件并运行以下命令:

C:\Program Files\Java\jdk1.6.0_20\bin>keytool -export -alias myAlias -keystore C:\Users\DON\.android\myKeyStore | C:\openssl\bin\openssl sha1 -binary | C:\openssl\bin\openssl enc -a -xtIm30l*********=

DON是我的系统名称,应替换为您的系统名称。

答案 1 :(得分:9)

  1. 下载openssl-for-windows包。
  2. 解压缩拉链。
  3. 在Windows中,修改指向<openssl-extracted-folder>/bin
  4. 路径系统变量
  5. 然后运行命令。

答案 2 :(得分:4)

首先做Facebook sdk设置然后主程序,如果你添加它,你将在控制台获得keyhash

一旦调试将有3种类型键的机会,另一种是释放键,上传谷歌更改签名后,您可以将这3个键提供给Facebook开发者帐户,然后您可以查看Facebook登录。取决于你的应用程序模式facebook将匹配key.Use toast看到keyhash,如果你不知道Android工作室的android监视器

import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FacebookSdk.sdkInitialize(getApplicationContext());
    AppEventsLogger.activateApp(this);
   printKeyHash();
}


private void printKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.i("KeyHash:",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.e("jk", "Exception(NameNotFoundException) : " + e);
    } catch (NoSuchAlgorithmException e) {
        Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
    }
}

}

答案 3 :(得分:2)

它的答案很晚但是它会对像我这样的懒人有所帮助..将此代码添加到您的Application类中,无需下载openssl而无需设置路径..只需要只是复制我的代码..和keyHash将在日志中生成。

import com.facebook.FacebookSdk;
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        printKeyHash();
    }

    private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.i("KeyHash:",
                        Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("jk", "Exception(NameNotFoundException) : " + e);
        } catch (NoSuchAlgorithmException e) {
            Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
        }
    }
}

并且不要忘记在清单中添加MyApplication类:

<application
        android:name=".application.MyApplication"
</application>

答案 4 :(得分:0)

https://code.google.com/archive/p/openssl-for-windows/downloads下载openssl。

提取文件,然后在CMD中执行,重新添加路由和键名

keytool -exportcert -alias KEYNAME -keystore "C:\Users\YOUR_USER\.android\debug.keystore" 
| "C:\URL_OPENSSL_EXTRACTED\bin\openssl" sha1 -binary 
| "C:\URL_OPENSSL_EXTRACTED\bin\openssl" base64.