我完全不明白这个过程。我已经能够导航到Java SDK中包含keytool的文件夹。虽然我一直得到错误openssl不识别为内部或外部命令。问题是,即使我能让它工作,我该做什么,然后做什么?
当前回答
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
...
保存更改并重新运行示例。检查你的logcat输出是否有类似这样的消息:
D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=
将密钥哈希保存在开发人员配置文件中。重新运行示例并验证可以成功登录。
其他回答
不安装openssl ->使用GIT BASH!
Keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug。Keystore | openssl sha1 -binary | openssl base64 . Keystore | openssl sha1 -binary
默认密码为“android”
我们大多数人都安装了Git Bash,所以这是我最喜欢的方式。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
...
保存更改并重新运行示例。检查你的logcat输出是否有类似这样的消息:
D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=
将密钥哈希保存在开发人员配置文件中。重新运行示例并验证可以成功登录。
如果你已经将应用程序上传到Play商店,你可以生成哈希密钥如下:
点击这里进入发布管理 选择“发布管理->应用签名” 你可以看到SHA1密钥十六进制格式的App签名证书。 复制十六进制格式的SHA1,并将其转换为base64格式,你可以使用这个链接做到没有SHA1:十六进制的一部分。 转到Facebook开发者控制台,在设置- > basic - > key哈希值中添加键(转换为base64后)。
很容易找到你的android项目的sha1
然后粘贴到这个网站上
对于get sha1只是
// vscode and my cmd
project-name/cd android && ./gradlew signingReport
// other
project-name/cd android && ./gradlew signingReport
这就是我如何获得我的:
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();
}
因此,当您试图在没有密钥的情况下输入时,将会出现异常。Facebook在这个例外中加入了RIGHT键。你所要做的就是复制它。
推荐文章
- 如何在android中获得当前前景活动上下文?
- JavaFX应用程序图标
- Java:强/软/弱/幻影引用的区别
- 如何在Android中获取当前日期?
- 在序列化和反序列化期间JSON属性的不同名称
- 获取Android设备名称
- Gradle代理配置
- 在WebView中上传文件
- 加载HTML文件到WebView
- Android:为什么视图没有maxHeight ?
- 如何获得具有已知资源名称的资源id ?
- 在Android上将字符串转换为整数
- 为什么“System.out。”println“工作在Android?
- 在Java中什么时候使用可变参数?
- WebView显示err_cleartext_not_allowed尽管站点是HTTPS