0

私は Android フィットネス アプリケーションに取り組んでいます。Facebook コースの詳細 (Android アプリケーションを介して距離、期間、カロリーなど) を送信できますが、場所のデータポイント リストを送信してタイムライン ステータスにマップを描画することはできません。この目的のための次のコード:

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 に答える