0

我正在开发一个 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.
4

1 回答 1

0

我很确定您设置的数据属性错误。

例如,“距离”应该是另一个具有“值”和“单位”属性的 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”属性。

于 2013-09-17T01:04:49.733 回答