从Android应用程序共享到Facebook的链接时,ShareDialog没有显示

时间:2014-10-15 10:13:39

标签: java android facebook mobile

我有一个带有FacebookApp共享功能的Android应用程序调用健康。它与FacebookApp_A一起使用(当我点击分享时,它显示了分享对象)。

我想通过FacebookApp_B替换FacebookApp_A。

步骤1:创建FacebookApp_B,定义PackageName,ClassName,启用(是)功能单点登录,使其成为一般公共状态。

第2步:我使用此代码获取HashKey,我得到了它。

尝试{

    PackageInfo info = getPackageManager().getPackageInfo("<--app Health package name -->",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) {

}

第3步:我将Manifest.xml中的facebook_app_id更改为FacebookApp_B的Id。

步骤4:我使用教育应用程序的文件 debug.keystore将我的项目构建到.apk文件,因为我丢失了Health App的密钥库。

步骤5:我设置了Health App并单击以共享指向facebook的链接。此时,屏幕上会显示确认对话框:

AppName想要访问您的公开个人资料和朋友列表

步骤6:单击“确定”,但不显示ShareDialog。

一切都适用于FacebookApp_A但不适用于FacebookApp_B,我不知道我错过了什么。

我希望将ShareDialog显示为使用FacebookApp_A。

非常感谢,

2 个答案:

答案 0 :(得分:0)

检查您在Android应用中使用的Facebook应用是否不在沙盒模式下。

答案 1 :(得分:0)

如果您已经创建了一个新的Facebook应用,那么您还必须生成 hashKey 。获得哈希密钥后,插入Facebook应用程序设置。要正确生成哈希密钥,请按照Facebook开发人员指南中的步骤进行操作。

Facebook Developer Guide

以下代码段摘自facebook开发人员指南部分[4]

public void printHashKey() {

   // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.facebook.samples.hellofacebook", 
                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) {
}

在Facebook应用设置中插入生成的 hashKey ,如下所示:

enter image description here