我正在研究我的Cordova应用程序以使其更具病毒性。因此,我希望将Facebook和Open Graph API包含在播放用户的新闻流中,当他们在游戏中存档新内容时。我对整个fb和开放图形的东西都是新手,所以请帮助开始使用它。
我通过运行以下代码登录新用户:
$(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"});
});
我在名称空间buy
下注册了名为einszwo
的开放图表操作。作为对象,我使用默认的object
。
目前尚未审核,但我正在使用开发者脸书帐户登录我的设备。
现在我要打电话给这个动作。为此,我使用以下代码:
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}}
如果有人可以帮助我解决这个问题,或者在我可以寻找更多信息的地方提供一些信息,那将会非常棒。
谢谢!
塞巴斯蒂安
修改
在对象工作时只粘贴网址的解决方案,但我们想要使用您在Facebook Object Browser中定义的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));});
返回
{"message":"(#3503) \"{\"og:title\":\"Test Thu May 23 2013 12:19:45 GMT+0300 (EEST)\",\"og:url\":\"http://facebook.com/appcenter/einszwo\",\"og:type\":\"Object\"}\" is an invalid value for property \"object\" with type \"Reference\"","type":"OAuthException","code":3503}
或使用预定义facebook对象的ID的方法,如:
FB.api('1234567890', 'POST', {
}, function(response) { console.log(JSON.stringify(response));});
任何人都可以帮助我吗?
谢谢!
答案 0 :(得分:3)
听起来你在谈论应用拥有的对象。
应用拥有的对象。这些对象用于整个应用程序。它们是公共的,就像自托管对象一样。使用您的应用的任何人都可以看到它们,并且它们可以附加到您的应用创建的任何故事中。
您不能将appcenter网址用作对象(如果您考虑开放图形网址的用途,这实际上没有意义,而且几乎是对Open Graph的误用)
您可以在cURL中创建对象或使用对象浏览器
在我的情况下,我为我的咖啡店类型创建了一个Leopluradon对象。然后我从创建的结果中获取了id(149831668534005)并在我的调用中使用了它
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);
}
});
可以在http://philippeharewood.com/facebook/charlie.html找到一个演示,它不会对你有用,但是你得到了要点。
然后你可以在你的活动中看到它。
https://developers.facebook.com/docs/opengraph/using-object-api/
中对此进行了解释答案 1 :(得分:2)
您应该提供打开图形对象的链接,例如:
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" />