C# Xamarin生成Facebook登录Keystore哈希遇CMD错误求助
解决Keystore哈希生成命令的PowerShell/CMD语法错误
错误原因
你遇到的报错是PowerShell专属的语法错误,说明你实际是在PowerShell窗口中执行了针对CMD编写的命令——两者的管道解析、可执行文件调用逻辑完全不同,导致sha1被当成PowerShell表达式而非openssl的参数。
解决方案分两种场景:
1. 使用纯CMD窗口执行(推荐,符合教程原命令逻辑)
打开系统的「命令提示符」(不是PowerShell),执行以下调整后的命令:
keytool -exportcert -alias <你的密钥库别名> -keystore <你的密钥库文件路径> | "C:\OpenSSL\bin\openssl.exe" sha1 -binary | "C:\OpenSSL\bin\openssl.exe" base64
- 替换
<你的密钥库别名>和<你的密钥库文件路径>为实际值,比如密钥库在当前目录叫myapp.keystore,别名是myalias,命令就是:keytool -exportcert -alias myalias -keystore myapp.keystore | "C:\OpenSSL\bin\openssl.exe" sha1 -binary | "C:\OpenSSL\bin\openssl.exe" base64 - 注意:如果
keytool找不到,需要把JDK的bin目录(比如C:\Program Files\Java\jdk1.8.0_301\bin)加入系统环境变量,或者写全keytool的绝对路径。
2. 若必须在PowerShell中执行
调整命令语法,用&调用可执行文件,或者直接让PowerShell调用CMD执行原命令:
- 方式一:适配PowerShell的管道语法
& keytool -exportcert -alias <你的密钥库别名> -keystore <你的密钥库文件路径> | & "C:\OpenSSL\bin\openssl.exe" sha1 -binary | & "C:\OpenSSL\bin\openssl.exe" base64 - 方式二:直接调用CMD执行原命令(更简单)
cmd /c 'keytool -exportcert -alias <你的密钥库别名> -keystore <你的密钥库文件路径> | "C:\OpenSSL\bin\openssl.exe" sha1 -binary | "C:\OpenSSL\bin\openssl.exe" base64'
额外检查点
- 确认
C:\OpenSSL\bin\openssl.exe路径正确,如果你的OpenSSL安装在其他目录(比如D:\OpenSSL-win64\bin),替换为实际路径。 - 执行命令时会要求输入密钥库密码,输入后即可生成Facebook登录所需的哈希值。
内容的提问来源于stack exchange,提问作者Wind_dk
相关产品推荐
相关产品推荐

