在我的一个应用程序中,我需要从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
释放键哈希源代码
我也有同样的问题。我确信这是由于非常小的错误,是的,它是!
我找到了解决方案:
当在我的计算机中生成调试哈希键时,我输入了我的系统密码。但密码应该是-
输入keystore密码:“android”。
这是我唯一的问题。
-----用于生成调试键哈希,使用此命令-
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
输入密钥库密码:'android'
-----要生成释放密钥哈希,使用命令-
keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64
执行此命令后,提供您的密钥存储库密码。
如果你遇到了这个问题,把这个键输入到你的developer.facebook.com:
然后确保你的应用在developer.facebook.com上是活跃的。
这个绿色圆圈表示应用程序是活的:
如果不是,那么按照以下两个步骤让你的应用上线:
步骤1进入应用程序→设置→添加“联系邮箱”,选择“保存更改”。
步骤2进入App Review选项,确保该选项为Yes。我加了一张截图:
注意:如果你想复制hashkey,请检查LogCat中的BlueServiceQueue。
我看到很多人给出了困难的答案,通过我解决我的问题的答案只是去项目/android文件夹/应用程序使用终端,这是你调试的地方。Keystore文件为
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
复制粘贴这个命令,替换你的项目/android/app/build.gradle中的别名和密码
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey' <---- alias
keyPassword 'android' <---- password
}
将以下代码粘贴到OnCreate方法中:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.packagename",
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();
}
只需修改包名。然后转到LogCat文件,在这里选择Debug搜索。然后你会找到哈希键。现在复制这个散列键,然后转到developer。facebook。app_id site,编辑你的散列键,然后按保存。现在再次运行Android项目。我认为问题会得到解决。