Динамически генерировать описание для явного общего рассказа об открытом графике через FB.ui Share Dialog

Из всех исследований, которые я провел по этой теме, 90% устарели, и это заставляет меня поверить, что в JS SDK Facebook недавно произошли изменения, касающиеся явного обмена историями Open Graph. У меня есть следующий код:

function postToFB(desc){
FB.ui({
    method: 'share_open_graph',
    action_type: 'mynamespace:myaction',
    action_properties: JSON.stringify({
        myobject: "myobjectid"
    })
}, function(response){});
}

Проблема заключается в том, что он пытается открыть доступ к моему объекту только с теми настройками, которые я установил в разделе "Открыть график" в Facebook настроек моего приложения. Я хотел бы использовать один и тот же объект, но меняю описание динамической переменной 'desc' каждый раз, когда он разделяется. Кто-нибудь знает, как этого добиться? Я могу статически установить подпись в разделе "Мой открытый график" в настройках приложения, но мне нужно динамически устанавливать его каждый раз, когда я делюсь им.

Я искал в Facebook JS SDK дополнительные пары ключ / значение, которые можно добавить в action_properties, но информация SDK в этом отношении очень ограничена.

ОБНОВИТЬ

Я изменил код, включив в него 2 вызова: один для создания объекта, а второй для публикации истории с информацией о новом объекте. Вот код:

function postToFB(desc){
FB.api(
    'me/objects/mynamespace:myobject',
    'post',
    {
    object: {
        "app_id": myappid,
        "type": "mynamespace:myobject",
        "url": "myurl",
        "title": "mytitle",
        "image": "myimgurl",
        "description": desc
        }
    },
    function(response) {
        console.log(response);
        FB.ui({
            method: 'share_open_graph',
            action_type: 'mynamespace:myaction',
            action_properties: JSON.stringify({
                myobject: response.id
        })
    }, function(r){});
});
}

Однако, согласно комментариям к этому вопросу: API объекта Facebook - дублированные объекты, созданные сотрудником Facebook, сказали, что этот подход не будет одобрен Facebook, потому что одно действие пользователя не может создать две записи, что сейчас делает этот код. Один будет публиковать объект в журнале активности пользователя Facebook, а другой - в журнале активности и ленте новостей.

Было бы хорошо, если бы я мог просто сделать один вызов и указать, каким должно быть описание myobject из самой функции FB.ui. Кто-нибудь знает как это сделать?

1 ответ

Решение

Я понял. Основная проблема, с которой я столкнулся, - это то, что я отправлял сообщения себе / объектам (которые бы отправляли событие в журнал активности пользователя), когда я должен был отправлять сообщения в приложение / объекты (которые создавали бы объект, но не публиковали событие). Поскольку для публикации в app/ что-нибудь требуется токен доступа, мне пришлось изменить первоначальный вызов, чтобы он происходил на стороне сервера в PHP:

$request = new FacebookRequest(  
null,  
'POST',  
'/app/objects/mynamespace:myobject', 
array(
        'access_token' => 'myaccesstoken',
    'object' => json_encode(array(
        'app_id' => myappid,
            'url' => 'myurl',
            'title' => 'mytitle',
            'image' => 'myimg',
            'description' => 'mydesc'
        ))
)
);
$response = $request->execute();
$obj = $response->getGraphObject();
echo $obj->getProperty('id');

Оттуда я мог бы использовать сценарий JS для публикации объекта с новым идентификатором в ленте пользователя.

Надеюсь, что вы не сможете потратить 2 с половиной дня, пытаясь понять это самостоятельно, как я.

Другие вопросы по тегам