我正在构建一个应用程序,它将支持 facebook。我已经从原始 Git 存储库下载了 facebook API 及其名为“Hackbook”的示例。问题在于登录 - 如果手机上未安装原始 FB 应用程序,则登录将通过自定义对话框进行,一切正常,但如果安装了 FB 应用程序,Hackbook 会自动重定向到原始 FB 应用程序,然后什么也没有发生。登录是不可能的。我已经在五款不同的手机上测试过这个,总是同样的问题。
6 回答
我有一个类似的问题。就我而言,我没有使用我的签名密钥创建哈希密钥。我刚刚使用debug.keystore默认签名密钥创建了一个哈希密钥。
一旦我使用我的应用程序发布签名密钥创建了一个哈希密钥,这个问题就得到了解决。如果您还没有这样做,请使用您的签名密钥(用于在市场上上传)创建一个新的哈希密钥,并将其添加到您应用的 Facebook 控制面板。
希望这可以帮助。
我辛苦了两天终于得到了解决方案,这是获取哈希键的错误方法-
keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* | [openssl_bin_directory]\openssl sha1 -binary | [openssl_bin_directory]\openssl base64
正确的方法是在 cmd 中键入这 3 行,一次一行。在第一行之后,系统会要求您插入密钥库密码。
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
如果您想了解详细信息,此处描述了正确的方法-
或在这里
使用此功能为您获取哈希键(调试和发布 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();
}
}
这对我有很大帮助..希望这对你也有帮助..
我已经解决了这个问题。通过使用获取密钥哈希后, keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
我第一次以发布模式成功登录...然后第二次出现常见错误您的密钥"*********real*key************"
与应用程序设置中指定的允许密钥不匹配。
只需使用"*********real*key************"
Facebook 在发布模式下成功登录的错误消息。因此,请确保在输入此密钥时使用完全相同的密钥。我的字母small(L) i.e (l)
会让你陷入困境。我制作了两个键,在我使用的第一个键和我使用small(L) i.e (l)
的第二个键中。并将这些键放在开发人员应用程序中。
它现在正在工作....
在我的情况下,问题是即使在生成正确的密钥之后,当设备上安装 facebook 应用程序时,用户登录也会被取消。
我在登录前添加了以下行,效果很好。
LoginManager.getInstance().logOut();
在我的情况下,问题是即使在 Xamarin Android 中生成正确的密钥后,当设备上安装 facebook 应用程序时,用户登录也会被取消。
我在登录前添加了以下行,效果很好。
LoginManager.Instance.SetLoginBehavior(LoginBehavior.NativeOnly);