我有一个带有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。
非常感谢,
答案 0 :(得分:0)
检查您在Android应用中使用的Facebook应用是否不在沙盒模式下。
答案 1 :(得分:0)
如果您已经创建了一个新的Facebook应用,那么您还必须生成 hashKey 。获得哈希密钥后,插入Facebook应用程序设置。要正确生成哈希密钥,请按照Facebook开发人员指南中的步骤进行操作。
以下代码段摘自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 ,如下所示: