Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook Javascript SDK:使用自定义打开的图形对象发布操作_Facebook_Facebook Graph Api_Facebook Javascript Sdk_Phonegap Plugins_Cordova 2.0.0 - Fatal编程技术网

Facebook Javascript SDK:使用自定义打开的图形对象发布操作

Facebook Javascript SDK:使用自定义打开的图形对象发布操作,facebook,facebook-graph-api,facebook-javascript-sdk,phonegap-plugins,cordova-2.0.0,Facebook,Facebook Graph Api,Facebook Javascript Sdk,Phonegap Plugins,Cordova 2.0.0,我正在开发我的Cordova应用程序,使其更具病毒性。因此,当玩家在游戏中存档新事物时,我想加入Facebook和OpenGraphAPI,在游戏用户的新闻流中发布。我对整个fb和OpenGraph是完全陌生的,所以请帮助我开始使用它 我通过运行以下代码登录新用户: $(login).on("click", function() { FB.login(function() { console.log("Default Login succeded"); c

我正在开发我的Cordova应用程序,使其更具病毒性。因此,当玩家在游戏中存档新事物时,我想加入Facebook和OpenGraphAPI,在游戏用户的新闻流中发布。我对整个fb和OpenGraph是完全陌生的,所以请帮助我开始使用它

我通过运行以下代码登录新用户:

$(login).on("click", function() {
    FB.login(function() {
        console.log("Default Login succeded");
        console.log("Asking for write permissions");
        FB.login(function(rsp) {
            console.log("GOT WRITE PERMISSIONS");
            log(rsp);
        }, {
            scope : 'publish_stream'
        });
    }, {scope:"email"});

});
    var obj = {
        title : "I visited Google",
        url : "http://www.google.com"
    };

    function callback(response) {
        console.log(JSON.stringify(response));
    }


    FB.api('me/einszwo:buy','POST',obj, callback);
我在命名空间
einszwo
下注册了一个名为
buy
的开放图形操作。作为对象,我使用默认的
对象

它还没有被审查,但我正在使用一个开发者facebook帐户登录我的设备

现在我想采取行动。为此,我使用以下代码:

$(login).on("click", function() {
    FB.login(function() {
        console.log("Default Login succeded");
        console.log("Asking for write permissions");
        FB.login(function(rsp) {
            console.log("GOT WRITE PERMISSIONS");
            log(rsp);
        }, {
            scope : 'publish_stream'
        });
    }, {scope:"email"});

});
    var obj = {
        title : "I visited Google",
        url : "http://www.google.com"
    };

    function callback(response) {
        console.log(JSON.stringify(response));
    }


    FB.api('me/einszwo:buy','POST',obj, callback);
不幸的是,呼叫失败,来自Facebook的响应如下:

{"error":{"type":"Exception",
     "message":"The action you're trying to publish is invalid because it does not 
      specify any reference objects. At least one of the following properties 
      must be specified: object.","code":1611072}}
如果有人能帮我解决这个问题,或者提供我的一些信息,我可以在那里寻找更多的信息,那就太好了

谢谢大家!

塞巴斯蒂安

编辑

解决方案只是在对象工作时粘贴url,但我们希望使用您在中定义的Facebook托管对象。方法是能够发布用户的活动,如果有人单击该活动,我们希望他们重定向到我们的应用程序信息页面

我们不能为每个不同的对象提供页面。是否有可能使用Facebook Javascript SDK来使用Facebook上托管的预定义对象

我真的希望有这样一种可能性来创建新的对象

   var o = {
        "og:title" : "Test " + new Date(),
        "og:url" : "http://facebook.com/appcenter/**APPNAMESPACE**",
        "og:type" : "Object"

    }
    FB.api('/me/**APPNAMESPACE**:buy', 'POST', {
        object : o
    }, function(response) { console.log(JSON.stringify(response));});
这是回报

{“消息”:“(#3503)\”{“og:title\”:“测试时间2013年5月23日星期四12:19:45 GMT+0300(EEST)”,“og:url\”:“http://facebook.com/appcenter/einszwo\“,”og:type\“:”Object\“}\”是类型为“Reference\”,”type“:”OAutheException“,”code“:”3503}”的属性“Object\”的无效值

或使用预定义facebook对象ID的方法,如:

    FB.api('1234567890', 'POST', {
    }, function(response) { console.log(JSON.stringify(response));});
有人能帮我吗


谢谢

您应该为打开的图形对象提供链接,例如:

FB.api('/me/einszwo:buy','POST',{object:'http://example.com/product1'}, callback);
链接的对象(
http://example.com/product1
)应具有打开的图形标记:

<meta property="fb:app_id" content="133696533402323" /> 
<meta property="og:type"   content="object" /> 
<meta property="og:url"    content="Put your own URL to the object here" /> 
<meta property="og:title"  content="Sample Object" /> 
<meta property="og:image"  content="https://s static.ak.fbcdn.net/images/devsite/attachment_blank.png" /> 

听起来你在谈论一个应用程序拥有的对象

应用程序拥有的对象。这些对象在整个应用程序中使用。它们是公共的,就像自托管对象一样。任何使用你的应用程序的人都可以看到它们,它们可以附加到你的应用程序创建的任何故事中

您不能将appcenter url用作对象(如果您想一想open graph url的用途,这就没有意义了,这几乎是对open graph的滥用)

可以在cURL中或使用对象浏览器创建对象

在我的例子中,我为我的咖啡店类型创建了一个Leopluradon对象。然后,我从创建结果中获得id(1498331668534005),并在调用中使用该id

FB.api(
'/me/philippeharewood:code',
'post',
{ coffeeshop: '149831668534005' },
function(response) {
   if (!response || response.error) {
      alert('Error occured');
      console.log(response.error);
   } else {
      alert('Publish was successful! Action ID: ' + response.id);
   }
});
演示可以在找到,它不会为你工作,但你得到的要点

然后你可以在你的活动中看到它


这些都在

中解释了嗨,米科莱,谢谢你的帮助!现在事情已经变得更有意义了;-)我现在可以在Facebook上发帖了。但该活动并未出现在“测试账户”好友的任何新闻流中。如果我使用给定的id来访问它,我可以看到它,但是它不会出现在任何地方。我是否需要做一些特殊的事情来向我的朋友展示该活动?是的,您必须提交您的操作以进行审查-您必须提供带有屏幕截图的复制步骤-理想情况下,当您将使用名为“Open Graph test user”的特殊测试用户时-您可以通过单击“切换到”登录到此帐户顺便说一句,FB有专门用于归档的API-你是对的,这是可行的,但我们很难实现它。我们确实希望在Facebook Javascript SDK中使用Facebook托管的对象。有人做到了吗?Hej Philippe,非常感谢你用完整的例子给出了完整的正确答案。这解决了我的问题,我现在可以使用应用程序拥有的对象了!谢谢!