Som*_*omk 165 java android facebook
我根本不明白这个过程.我已经能够导航到Java SDK中包含keytool的文件夹.虽然我不断收到错误openssl未被识别为内部或外部命令.问题是即使我可以让这个工作,我会做什么以及之后做什么?
cod*_*e22 219
这是你需要做的 -
从Code Extract 下载openSSl .在C:/中创建一个文件夹-OpenSSL,并在此复制提取的代码.
检测debug.keystore文件路径.如果你没找到,那么在C:/中搜索并在下一步中使用命令中的Path.
检测您的keytool.exe路径并转到该dir/in命令提示符并在1行中运行此命令 -
$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64
Run Code Online (Sandbox Code Playgroud)
它会要求输入密码,把android放在一边.你会得到一个密钥哈希
Bir*_*dia 158
适用于Linux和Mac
开放式终端:
对于Debug Build
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
您将在".android"文件夹中找到debug.keystore.将其复制并粘贴到桌面上并运行上述命令.
发布版本
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
注意:确保在两种情况下都要求输入密码.如果它没有要求输入密码,则表示命令中出现了问题.debug.keystore的密码是" android ",对于发布,您必须输入在create keystore期间设置的密码.
Mad*_*ddy 83
请试试这个:
public static void printHashKey(Context pContext) {
try {
PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
}
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "printHashKey()", e);
} catch (Exception e) {
Log.e(TAG, "printHashKey()", e);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 48
OpenSSL:如果未预装操作系统,则必须安装(例如,Windows未预安装).如何安装取决于您的操作系统(对于Windows,请检查coder_For_Life22提供的链接).
如果你在Windows上,最简单的方法就是将openssl.exe二进制文件复制到你的keytool路径.如果您不想这样做,则必须将其添加到PATH环境变量中.然后执行文档中提供的命令.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
请注意,-keystore指向调试密钥库之后的参数.此位置还取决于您的操作系统.应该在以下位置之一:
如果您做的一切正确,则应提示您输入密码.这是android调试证书.如果密码正确,控制台会打印一个哈希值(有点随机的字符和数字).
把它复制到android key hashFacebook上你的应用程序首选项内的字段中.要到达那里,请访问developers.facebook.com/apps,选择您的应用,转到并向下Edit settings滚动.之后,请等待几分钟,直到更改生效.
Rak*_*esh 22
要在本地计算机上生成密钥哈希,请针对Android调试密钥库运行Java的keytool实用程序(应该在控制台的路径上).默认情况下,这是您家中的.android目录).在OS X上,运行:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
在Windows上,使用: -
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助
Ref - 开发者facebook网站
Man*_*ddy 16
像我这样的人这里是完整的细节(适用于Windows)
1.根据您的系统32位或64位下载OpenSSl第3或第4(e将更好地工作).
2.解压缩C目录中的下载zip
3.打开提取的文件夹到bin并复制路径,它应该是一些东西C:\openssl-0.9.8k_X64\bin\openssl (在末尾添加\ openssl)
4.(获取Jdk的bin文件夹的路径,如果你知道如何,请忽略它).
打开android studio~file~Project Structure(ctrl + alt + shift + s),在左侧面板中选择SDK位置,复制JDK位置并添加/ bin到它
所以最终的JDK位置就像 C:\Program Files\Android\Android Studio\jre\bin
我们正在使用这种方法来获取Jdk位置,因为你可能会使用像我这样的嵌入式jdk
现在您拥有OpenSSl位置和JDK位置
5.现在我们需要调试keystore位置,对于那个打开C~> Users~> YourUserName~> .android应该有一个文件名debug.keystore,现在复制路径位置,应该是有些像
C:\Users\Redman\.android\debug.keystore
6.现在打开命令提示符并键入命令
cd YourJDKLocationFromStep4
Run Code Online (Sandbox Code Playgroud)
在我的情况下
cd "C:\Program Files\Android\Android Studio\jre\bin"
Run Code Online (Sandbox Code Playgroud)
7.现在构造以下命令
keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
Run Code Online (Sandbox Code Playgroud)
在我的情况下,命令看起来像
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
Run Code Online (Sandbox Code Playgroud)
现在在命令提示符下输入此命令,如果你做对了,你会被要求输入密码(密码是android)
Enter keystore password: android
Run Code Online (Sandbox Code Playgroud)
就是这样,你将获得Key Hash,只需复制并使用它
对于Signed KeyHash,构造以下命令
keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
Run Code Online (Sandbox Code Playgroud)
输入您的密钥库密码,如果您输入了错误的密码,它将提供错误的KeyHash
注意
如果由于某种原因,如果它在某个路径上出错,那么用双引号包装该路径.而且Windows power shell对我来说效果不好,我使用git bash(或使用命令提示符).
例
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
Run Code Online (Sandbox Code Playgroud)
and*_*per 16
还有一个简短的解决方案.只需在您的应用中运行:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));
Run Code Online (Sandbox Code Playgroud)
较长的一个不需要FB SDK(基于此处的解决方案):
public static void printHashKey(Context context) {
try {
final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
final MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i("AppLog", "key:" + hashKey + "=");
}
} catch (Exception e) {
Log.e("AppLog", "error:", e);
}
}
Run Code Online (Sandbox Code Playgroud)
结果应以"="结尾.
对于Windows:
keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android\debug.keystore | openssl sha1 -binary | openssl base64
输入密码:android - >点击Enter
复制生成的哈希密钥 - >使用您的开发者帐户登录Facebook
转到您的Facebook应用程序 - >设置 - >在"键哈希"选项中粘贴哈希键 - >保存更改.
现在用Facebook登录/分享等测试你的Android应用程序.
从API 26开始,您可以在KOTLIN中使用以下代码生成哈希键,而无需Facebook SDK。
fun generateSSHKey(context: Context){
try {
val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.getEncoder().encode(md.digest()))
Log.i("AppLog", "key:$hashKey=")
}
} catch (e: Exception) {
Log.e("AppLog", "error:", e)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
这就是我获得我的方式:
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (exception != null) {
new AlertDialog.Builder(FriendActivity.this)
.setTitle(R.string.login_failed_dialog_title)
.setMessage(exception.getMessage())
.setPositiveButton(R.string.ok_button, null)
.show();
}
Run Code Online (Sandbox Code Playgroud)
因此,当您尝试在没有密钥的情况下进入时,将发生异常.Facebook将右键放入此例外.您需要做的就是复制它.
您只需在浏览器控制台中使用一行JavaScript即可将十六进制映射键转换为base64。在最新的浏览器中打开控制台(在Windows上为F12),然后粘贴代码并替换Google Play在> 下提供的SHA-1,SHA-256十六进制映射:Release ManagmentApp signing
> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
Run Code Online (Sandbox Code Playgroud)
简单的方法 -> 不要安装 openssl -> 使用 GIT BASH!
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
默认密码是“android”
我们大多数人都安装了 Git Bash,所以这是我最喜欢的方式。
很容易找到你的android项目的sha1
并粘贴到本网站tomeko
为了得到 sha1 只是
// vscode and my cmd
project-name/cd android && ./gradlew signingReport
// other
project-name/cd android && ./gradlew signingReport
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243646 次 |
| 最近记录: |