我正在构建一个应用程序,它将支持facebook。我从原始的Git repos下载了facebook API和他们的样本“Hackbook”。问题在于登录 - 如果手机上没有安装原始FB应用程序,登录将通过自定义对话框,一切正常,但如果安装了FB应用程序,黑客手册会自动重定向到原始FB应用程序,然后什么也没发生。登录是不可能的。 我已经在五款不同的手机上测试了它,并且总是存在同样的问题。
答案 0 :(得分:18)
我有类似的问题。就我而言,我没有使用我的签名密钥创建一个哈希密钥。我只使用 debug.keystore 默认签名密钥创建了一个哈希密钥。
一旦我使用我的应用发布签名密钥创建了一个哈希密钥,就解决了这个问题。如果您还没有这样做,请使用您的签名密钥创建一个新的哈希密钥(用于在市场上传)并将其添加到您应用的Facebook控制面板。
希望这有帮助。
答案 1 :(得分:4)
我辛苦了两天&最后获得了解决方案,这是获取哈希密钥的错误方法 -
keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* | [openssl_bin_directory]\openssl sha1 -binary | [openssl_bin_directory]\openssl base64
正确方式键入这3行,cmd中一次输入一行。在第一行之后,系统会要求您插入密钥库密码。
keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* > [openssl_bin_directory]\debug.txt
[openssl_bin_directory]\openssl sha1 -binary [openssl_bin_directory]\debug.txt > [openssl_bin_directory]\debug_sha.txt
[openssl_bin_directory]\openssl base64 -in [openssl_bin_directory]\debug_sha.txt > [openssl_bin_directory]\debug_base64.txt
如果您想了解详细信息,请在此处描述 RIGHT 方式 -
或在这里
答案 2 :(得分:1)
使用此函数获取散列密钥(debug和release apk)并将其放入developer.facebook.com/apps中的应用程序
private void calculateHashKey(String yourPackageName) {
try {
PackageInfo info = getPackageManager().getPackageInfo(
yourPackageName,
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) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
这对我帮助很大..希望这对你也有帮助..
答案 3 :(得分:1)
我已经解决了这个问题。使用keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
获取密钥哈希后,我已成功首次登录发布模式...
然后第二次我得到了常见的错误
您的密钥"*********real*key************"
与应用程序设置中指定的允许密钥不匹配。
只需使用Facebook在错误消息中提供的"*********real*key************"
我现在在发布模式下成功登录。
因此,请务必在输入此密钥时使用完全相同的密钥。这封信我small(L) i.e (l)
会让你陷入困境。我制作了两个键,在第一个键中我使用了small(L) i.e (l)
,在第二个键中我使用了I.并将这些键放在了开发者应用程序中。
它现在正在运作....
答案 4 :(得分:1)
在我的情况下,问题是即使在生成正确的密钥后,当Facebook应用程序安装在设备上时,用户登录也会被取消。
我在登录前添加了以下行,效果很好。
LoginManager.getInstance().logOut();