我想将Android游戏中的成就发布到用户的Facebook墙上。 我正在使用facebook api 4.1,经过数小时的试验和错误仍然遇到麻烦。
我在布局中显示了一个ShareButton:
<com.facebook.share.widget.ShareButton
android:id="@+id/shareButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:visibility="visible" />
然后我在按钮上注册onClickListener:
ShareButton shareButton = (ShareButton) findViewById(R.id.shareButton);
shareButton.setOnClickListener(this);
执行onClick时执行以下代码:
// Create an object
ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
.putString("og:type", "game.achievement")
//.putString("eaustria_net:achievement", "http://samples.ogp.me/161147604019932")
.putString("og:title", "Hole dir die Frogsmasher app unter: https://play.google.com/store/apps/details?id=eaustria.net.findthebug")
.putInt("game:points", highscore)
.build();
// Create an action
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
.setActionType("games.achieves")
.putObject("achievement", object)
.build();
// Create the content
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
.setAction(action)
.setPreviewPropertyName("achievement")
//.setPreviewPropertyName("achieves")
.build();
ShareDialog shareDialog = new ShareDialog(this);
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
Log.d(TAG, "sharedialog onSuccess");
}
@Override
public void onCancel() {
Log.d(TAG, "sharedialog onCancel");
}
@Override
public void onError(FacebookException e) {
Log.d(TAG, "sharedialog exception: " + e.getLocalizedMessage());
}
});
shareDialog.show(content);
点击共享按钮后,fb会显示很短的时间并再次关闭。 Log cat说:
sharedialog exception:无法为用户生成预览。
我认为这与动作标签相对应。但我不知道如何改变这一点。我在fb上使用以下网址创建了一个开放图表操作:https://graph.facebook.com/me/games.achieves?
在manifest.xml中我放了app_id:
`<string name="facebook_app_id">827293344022992</string>`
我错的任何想法?