Flutter项目生成Facebook登录key hash执行命令报错如何解决?
问题根因
该报错是PowerShell的语法限制:带空格的可执行文件路径作为管道后续执行的命令时,不能直接用引号包裹路径后追加参数,必须使用调用运算符&显式声明要执行的程序。
可行解决方案
方案1:修正PowerShell命令(推荐)
直接在每个openssl调用前添加&,执行修正后的命令即可:
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Jaffs\.android\debug.keystore" | & "C:\Program Files\openSSl\bin\openssl" sha1 -binary | & "C:\Program Files\openSSl\bin\openssl" base64
提示输入密钥库密码时,默认debug签名的密码为android,直接输入后回车即可得到key hash。
如果需要生成release包对应的key hash,替换命令中的alias、keystore路径为你自己的release签名配置,输入对应签名密码即可。
方案2:通过CMD执行原命令
CMD不存在上述PowerShell语法限制,按下Win+R输入cmd回车打开命令提示符,直接运行你原本的命令即可:
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Jaffs\.android\debug.keystore" | "C:\Program Files\openSSl\bin\openssl" sha1 -binary | "C:\Program Files\openSSl\bin\openssl" base64
方案3:分步生成(适合管道调用异常场景)
如果上述方案仍有问题,可以拆分步骤执行,避免管道调用:
- 导出签名证书到临时文件
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Jaffs\.android\debug.keystore" -file debug.cert
- 生成SHA1二进制文件
& "C:\Program Files\openSSl\bin\openssl" sha1 -binary debug.cert > debug.sha1
- 转Base64得到最终key hash
& "C:\Program Files\openSSl\bin\openssl" base64 debug.sha1
执行完成后可删除生成的debug.cert、debug.sha1临时文件。
内容的提问来源于stack exchange,提问作者Zilaid
相关产品推荐
相关产品推荐

