我想在Facebook上分享用户使用我的应用程序玩游戏。我想展示他和谁一起玩(可标记的朋友)。我添加了一个新的故事"玩"与"游戏匹配"对象。动作"播放"是自动生成的。现在我想为用户创建一个共享对话框,以便他实际上可以在Facebook上共享它。不幸的是,我的代码不起作用。但是,当我使用游戏匹配对象的示例 url 地址时,它呈现良好并且似乎工作正常。这是怎么回事?你能给我解释一下问题是什么吗?这是我的代码。请查看标有注释"方式##"的 3 行。当行方式#1未注释时一切正常,但我想使用我刚刚创建的对象,所以我尝试使用方式#2,但我收到"无法为用户生成预览"的错误。
ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
.putString("og:type", "games.match")
.putString("og:title", "Quick Draw Round")
.putString("og:image", "https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png")
.putString("games:players", "499827376")
.putInt("games:score", 100)
.putString("og:determiner", "a")
.putString("fb:app_id", "224658110883993")
.build();
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
.setActionType("queuedroid-test:play")
.putString("match", "http://samples.ogp.me/413385652011237") // Way #1
// .putObject("match", object) // Way #2
.build();
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
.setPreviewPropertyName("match")
.setAction(action)
.build();
ShareDialog dlg = new ShareDialog(activity);
dlg.registerCallback(mCallbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
Log.d(TAG, "onSuccess: SUCCESS");
}
@Override
public void onCancel() {
Log.d(TAG, "onCancel: CANCEL");
}
@Override
public void onError(FacebookException error) {
Log.d(TAG, "onError: " + error.toString());
}
});
dlg.show(content);
它的名称不包括空间。应将行.putObject("match", object)
更改为
.putObject("queuedroid-test:match", object)
其中队列机器人测试是您在 https://developers.facebook.com/apps 上的应用名称空间