如何在画布应用上为共享对话框设置新消息?

时间:2015-09-24 09:27:00

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

使用Facebook的JavaScript SDK我正在尝试从画布应用中的打开共享对话框,我可以做得很好。但是,当我尝试修改随之发送的消息时,我无法让事情发生。

我知道我可以使用文档本身中的元标记来更改消息,因为Facebook在链接上抓取页面以从文档的og:*抓取head标记,但是我要分享的信息特定于此用户的体验,例如:"我只是在此测验中得到9/10,你能做得更好吗?"。

我已经设置了一个动作,对象和故事,这些动作,对象和故事正在联系起来。以下是我的代码,它不会更改消息:

FB.ui({
    method: 'share_open_graph',
    action_type: 'the-dog-breed-quiz:take',         
    action_properties: JSON.stringify({
        quiz:'https://apps.facebook.com/removed',
        message: 'I scored 15 out of a possible 20 on the Test quiz. Can you do any better?'
    })
}, function(response){});

1 个答案:

答案 0 :(得分:0)

经过多次搜索和拼接后,我有以下解决方案。

这个过程是:

  • 点击按钮。这是必须的,因为您需要提供用户交互的证据才能显示对话框。
  • 确保您在登录时获得publish_actions权限
  • 创建用户操作。我是用JS SDK做的,见下面的代码。
  • 从用户操作中获取ID,并将其作为UI调用的一部分进行引用

FB.api(
    'me/objects/your-app-namespace:quiz',
    'post',
    {'object': {
        'og:title': 'Blah blah',
        'og:type': 'your-app-namespace:quiz',
        'og:image': 'https://fbstatic-a.akamaihd.net/images/devsite/attachment_blank.png',
        'og:description': 'keyboard mashdfhg nfkg kfd hg',
        'fb:app_id': 'removed'
    }},

    function(response) {    
        // handle the response
        FB.ui({
            method: 'share_open_graph',
            action_type: 'your-app-namespace:take',
            action_properties: JSON.stringify({
                quiz:response.id,
            })
        }, function(response){
            console.log(response);
        });
    }
);