Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用android中的Keytool为W7 32位生成Keyhash(Facebook)_Android_Facebook - Fatal编程技术网

如何使用android中的Keytool为W7 32位生成Keyhash(Facebook)

如何使用android中的Keytool为W7 32位生成Keyhash(Facebook),android,facebook,Android,Facebook,我试图生成Keyhash,以便在我们的应用程序中集成Facebook,但当我通过cmd提示符生成Keyhash时,它无法生成 C:\Users\DON\.android>keytool -exportcert -alias androiddebugkey -keystore ~/.an droid/debug.keystore | openssl sha1 -binary | openssl base64 “keytool”未被识别为内部或外部命令, 可操作的程序或批处理文件 我

我试图生成Keyhash,以便在我们的应用程序中集成Facebook,但当我通过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”未被识别为内部或外部命令, 可操作的程序或批处理文件


有什么问题吗?

使用此命令首先下载此文件。然后提取文件并运行以下命令:

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是我的系统名,应替换为您的系统名。

  • 下载软件包
  • 拉开拉链
  • 在windows中,编辑指向
    /bin
  • 然后运行命令
    这是迟来的答复,但对像我这样懒惰的人会有帮助。。将此代码添加到应用程序类中,无需下载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>
    

    首先安装Facebook sdk,然后安装主程序。如果您添加此程序,您将在控制台获得keyhash

    有可能会有3个类型的密钥,一个是调试密钥,另一个是发布密钥,在上传google changes签名后,您可以将所有这3个密钥提供给facebook开发者帐户,然后您可以检查facebook登录。根据你的应用模式,facebook将匹配密钥。如果你不知道android studio中的android monitor,请使用toast查看密钥哈希

    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);
        }
    }
    
    }从下载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.
    

    首先在s/m中搜索keytool应用程序,导航到该目录并使用命令Sir@droidhot我无法理解,请注意,如果“keytool”未被识别为内部或外部命令,则表明C:\Users\DON.android>不包含keytool。exe@droidhot ,先生,如何在我们的.android folderReference qtn中获取这个keytool.exe,以防它显示:未知选项“-xtlm301********=”。它的工作原理是在最后替换为base64。keytool-export-alias myAlias-keystore C:\DON\.android\myKeyStore | C:\openssl\bin\openssl sha1-binary | C:\openssl\bin\openssl base64@Rishi Gautam--谢谢!!救了我一天。hi Mushtaq,你能告诉我如何编辑路径吗。我是斯塔克。请帮助meHi@androidenthusist您可以按照此设置路径变量,感谢您的响应。我稍后会试试这个。对不起,穆斯塔克,我在候机楼不太好:D@AndroidEnthusiast嘿,不需要道歉,希望这有帮助