在我的一个应用程序中,我需要从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");
}
我通过在MainApplication.onCreate中添加以下内容来修复这个问题:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.genolingo.genolingo",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
KeyHash.addKeyHash(hash);
}
}
catch (PackageManager.NameNotFoundException e) {
Log.e("PackageInfoError:", "NameNotFoundException");
}
catch (NoSuchAlgorithmException e) {
Log.e("PackageInfoError:", "NoSuchAlgorithmException");
}
然后我将其上传到谷歌开发人员控制台,然后下载了派生的APK,无论出于什么原因,它具有完全不同的键散列。
然后我使用LogCat来确定新的密钥散列,并将其添加到Facebook,就像其他用户所概述的那样。
下面的代码将为您提供Facebook的散列,但您必须遵循以下步骤才能获得发布候选散列。
Copy and paste this code in your main activity
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) {
}
catch (NoSuchAlgorithmException e) {
}
Generate a signed APK file.
Connect your phone to a laptop and make sure it stays connected.
Install and run the APK file in your phone by manually moving the release APK to your phone.
Now look at Android LogCat (use filter KeyHash:). You should see your release hash key for Facebook. Simply copy and paste it in your https://developers.facebook.com/apps. It's under settings.
Now you can test the app it should work perfectly well.