我正在开发一个Android健身应用程序,我可以通过我的Android应用程序发送到Facebook的课程详细信息,如距离,持续时间或卡路里,但我无法发送数据点的位置列表来绘制我的时间线状态的地图,我为此目的使用了以下代码:
public void shareWorkout (View v)
{
if (FacebookDialog.canPresentShareDialog(getApplicationContext(),
FacebookDialog.ShareDialogFeature.SHARE_DIALOG))
{
OpenGraphObject course = OpenGraphObject.Factory.createForPost(null);
course.setType("fitness.course");
course.setTitle("Walking Course");
course.setUrl("http://samples.ogp.me/136756249803614");
course.setDescription("walked a course");
course.getData().setProperty("distance:value", 2.5f);
course.getData().setProperty("distance:units", "km");
course.getData().setProperty("duration:value", 1800.0f);
course.getData().setProperty("duration:units", "s");
course.getData().setProperty("speed:value", 3.0f);
course.getData().setProperty("speed:units", "m/s");
int[] cals = {50,70};
course.getData().setProperty("metrics:calories",cals);
OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
action.setProperty("course", course);
FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(this, action, "fitness.walks", "course").build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
}
运行此代码后,我得到了例外:
com.facebook.facebookexception: failed to generate preview for user.
答案 0 :(得分:0)
我很确定你设置数据属性是错误的。
例如,“distance”应该是具有“value”和“unit”属性的另一个GraphObject:
GraphObject distance = new GraphObject.Factory.create();
distance.setProperty("value", 2.5f);
distance.setProperty("units", "km");
course.getData.setProperty("distance", distance);
同样适用于持续时间和速度。最后,“metrics”包含图形对象列表,因此您需要首先构建GraphObjects列表,然后将其设置为getData上的“metrics”属性。