在我的一个应用程序中,我需要从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");
}

当前回答

将以下代码粘贴到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项目。我认为问题会得到解决。

其他回答

您必须创建两个键散列,一个用于调试,另一个用于发布。

对于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

释放键哈希源代码

我也有同样的问题。

确保使用生成hashkey(存储在Facebook开发者部分)的相同设备构建APK文件。

我是这样解决这个问题的:

首先,您必须获得SHA-1值。有两种方法。

在Android Studio中获取SHA-1值。

点击它 点击签署报告 复制SHA-1的值

OR

从密钥存储文件中获取SHA-1值。

keytool -list -v -keystore keystore_file_name.jks -alias key0

复制SHA-1值到你的剪贴板,像这样:

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

并打开十六进制-> Base64字符串解码器将您的SHA-1值转换为Base64。

这正是Facebook所需要的。

获取生成的哈希值“********************=”,并将密钥哈希值复制到Facebook应用程序。

如果您正在生成释放密钥散列,请确保输入密钥库的实际密码,而不是“android”。

这是我的问题。调试版本正在工作,但是发布APK没有。

如果你遇到了这个问题,把这个键输入到你的developer.facebook.com:

然后确保你的应用在developer.facebook.com上是活跃的。

这个绿色圆圈表示应用程序是活的:

如果不是,那么按照以下两个步骤让你的应用上线:

步骤1进入应用程序→设置→添加“联系邮箱”,选择“保存更改”。

步骤2进入App Review选项,确保该选项为Yes。我加了一张截图:

注意:如果你想复制hashkey,请检查LogCat中的BlueServiceQueue。