在我的一个应用程序中,我需要从Facebook获取数据…我是这样做的:
我已经创建了应用ID。它成功登录,但注销后,我登录,然后它给我:
我做错了什么?我正在使用Facebook SDK…我已经在手机上安装了Facebook。它在模拟器中运行良好,但没有安装内置的Facebook应用程序。
这是我的代码:
if (FB_APP_ID == null) {
Builder alertBuilder = new Builder(this);
alertBuilder.setTitle("Warning");
alertBuilder.setMessage("A Facebook Applicaton ID must be " +
"specified before running this example: see App.java");
alertBuilder.create().show();
}
// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
}
else {
dispatcher.runHandler("login");
}
您必须创建两个键散列,一个用于调试,另一个用于发布。
对于Debug键哈希:
在OS X上运行:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
在Windows上运行:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64
调试键哈希源代码
对于Release键哈希:
在OS X上,运行(将<>之间的值替换为您的值):
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
在Windows上,使用(将<>之间的值替换为您的值):
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
释放键哈希源代码
我也遇到过同样的问题。我对这种奇怪行为的可能原因做了一个简短的研究,我发现了以下几点:
在一个新的Facebook应用程序的第一次执行期间,即使你没有指定任何键哈希,它也将允许连接/登录。
对我来说,Facebook提供的教程没有生成正确的键散列,因为它给出了错误的配置。当执行:
keytool -exportcert -alias androiddebugkey -keystore % home路径%\.android\调试。Keystore | openssl sha1 -binary | openssl . Keystore | openssl sha1 -binary | openssl . Keystore
base64
确保检查了所有属性——HOMEPATH、密钥库的存在等等。可能还需要提供密码。
生成正确配置的是@Mahendran建议的解决方案。
此外,如果您看到最初发布的错误(http://i.stack.imgur.com/58q3v.png),那么您在屏幕上看到的键散列很可能就是您的真实键散列。如果其他方法都不管用,试试把它输入Facebook。
我得到了所有这些结果:Windows 7 64位版本,Android Studio 1.2.2, JDK 7。