在javascript中发布自定义Facebook故事



我已经浏览了Facebook的陈旧文档丛林,看遍了谷歌和所有的堆栈溢出。似乎有一些东西我没有得到张贴一个自定义的故事使用图形对象。我有一个应用程序,这只是一个基本的测验,我建立在flash建设者,它会问你4个问题,并给你一个分数基于多少你得到了正确的。在未来,我希望能够代表用户发布一个故事,指示他们的分数,并将他们引导到应用程序。

然而,我被困在第一步,即发布一个自定义故事。一旦我克服了这个障碍,我应该就能从那里弄清楚了。

这是我得到的。我使用flash builder来构建一个web应用程序,其中我托管在我的域(https域)。在html模板中,我为对象"Quiz"设置元标记信息,该对象作为index.html页面托管在域上。这是我的元标签信息

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# gqt_test: http://ogp.me/ns/fb/gqt_test#">
        <meta property="fb:app_id"      content="my app id" /> 
        <meta property="og:type"        content="getquiztool_test:quiz" /> 
        <meta property="og:url"         content="https://my domain.com/getquiztool/" /> 
        <meta property="og:title"       content="Sample Quiz" /> 
        <meta property="og:image"       content="https://my domain.com/getquiztool/game.png" /> 
        <meta property="gqt_test:score" content="Sample score" /> 

我也像这样加载facebook SDK,这在之前的一些简单代码测试中起作用,例如发布一个像action

(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&appId=258148224385655&version=v2.0";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

我还从应用程序页面"Open Graph"部分创建了自定义故事,使用action"Take"和object"Quiz"。

这是我的工作。这两个按钮。第一个允许用户以链接的形式分享网站。第二个是尝试做"feed-gaming",但我后来放弃了,因为我相信他们已经不再支持它了。它可以让你共享一个链接,链接到嵌入在文章中的swf(但不能运行)。

<div class="fb-share-button" data-href="mydomain.com/app_namespace"></div>
    <button onclick="var obj = {
        method: 'feed',
        title: 'Test',
        link: 'mydomain.com/app_namespace'
        };
        function callback(response) {
        console.log(response);
        }
        FB.ui(obj, callback);"
        >Share me, please</button>

所以Facebook SDK在我的域名上工作。这是行不通的。使用他们提供的样例代码。我已经把它修改了十几次,变成了5套不同的代码,所以我甚至不确定每一套都有什么问题。

function shareStatus()
    {
        FB.ui(
        {
            method: 'share_open_graph',
            action_type: 'getquiztool_test.quiz',
            action_properties: JSON.stringify(
            {
                object:'https://mydomain.com/app_namespace/',
            })
        }, function(response){});
    }

当我调用这个函数时,我从facebook弹出的操作类型是无效的。这是有道理的,因为这是一个对象而不是一个动作。但是我不确定我应该在这个函数中调用什么。

我已经尝试了从Facebook为我生成的代码,像这样

FB.api(
  'me/gqt_test:take',
  'post',
  {
    quiz: "http://samples.ogp.me/258211017712709"
  },
  function(response) {
    // handle the response
  }
);

shareStatus()函数内,但是当我这样做时,我什么也得不到。无响应,无错误。

我很抱歉给你发了这么多短信,但我只是想让大家知道,我不会在沮丧了5分钟后再来这里。我们花了3天,也许10个小时,摆弄这些东西,试着学习文档,试着得到结果。我学到了很多,但似乎都与我无关。我错过什么了吗?

我至少可以要求一个你可能知道的详细教程,只是一个链接。就像,一步一步,乏味的一步。因为facebook的文档只是假设你知道它的其他部分是如何工作的,而链接只会把你带进圈子,而不会清楚地解释事情或给出例子。

我明白了。正如我所料,这是一件非常愚蠢的事情。而且,就像我在任何地方问问题时一样,几个小时后就发生了。虽然,我需要使用的应用程序名称空间是我的应用程序名称的缩写,我真的不记得设置自己(而不是像"myappnamespace_test"它是"man_test",所以我的应用程序名称空间缩写为M-A-N)

在其他一切都到位的情况下,这是对我有效的调用。

function shareStatus()
    {
        FB.ui(
        {
            method: 'share_open_graph',
            action_type: 'man_test:take',
            action_properties: JSON.stringify(
            {
                quiz:'https://mydomain.com/whereTheObjectWithMetaTagsIs',
            })
        }, function(response){});
    }

最新更新