如何使用自定义属性创建/发布Open Graph对象实例/记录?

时间:2013-10-15 18:19:21

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

var hashid = 'abc123'; 
var title = 'Awesome Widget';
FB.api( // creating the widget object instance/record
  'me/objects/myapp:widget',
  'post',
  {
    object: JSON.stringify({
      'app_id': <obfuscated>,
      'url': 'http://example.com/' + hashid, // maps to og:url
      'title': 'widget',  // maps to og:title
      'myapp:real_title': title,  // maps to nothing right now!  No bueno!
      'image': { // maps to og:image
        'url': 'http://example.com/images/' + hashid  
      },
      'description': 'Man, this widget is awesome!' // maps to og:description
    })
  },
  function(response) {
    // handle the response
  }
);

是的,我已经创建了自定义“小部件”对象和自定义“real_title”属性。正在创建对象,但不包括“real_title”属性:

no bueno

我是否需要在每个属性(og:title等)的对象实例/记录中指定特殊语法?

P.S。

我希望og:title只是“小部件”,因为我想以特定的方式创建用户故事。因此,还需要指定real_title

P.S.S。

我实际上是在创建对象实例,对象记录还是其他什么?

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

标准对象属性被添加到JSON的顶级   您传入调用以创建对象的对象。

     

应包含任何不属于标准对象属性的属性   作为数据:创建时传入的JSON对象上的{...}元素   一个东西。这是一个包含自定义山类型的示例   海拔自定义属性;

{
  title: 'Mt. Rainier', 
  type: 'myapp:mountain',
  image: 'http://en.wikipedia.org/wiki/File:Mount_Rainier_5917s.JPG', 
  url: 'https://url.to.your.app/example/mountains/Mt-Rainier',
  description: 'Classic cold war technothriller',
  data: {
    elevation: 14411
  }
}
  

此格式与对象在读取时的外观相同   通过Graph API从数据库返回。

简而言之,您需要执行以下操作:

var hashid = 'abc123'; 
var title = 'Awesome Widget';
FB.api( // creating the widget object instance/record
  'me/objects/myapp:widget',
  'post',
  {
    object: JSON.stringify({
      'app_id': <obfuscated>,
      'url': 'http://example.com/' + hashid, // maps to og:url
      'title': 'widget',  // maps to og:title
      'image': { // maps to og:image
        'url': 'http://example.com/images/' + hashid  
      },
      'description': 'Man, this widget is awesome!', // maps to og:description
      'data': {
        'real_title': title // maps to myapp:real_title
      }
    })
  },
  function(response) {
    // handle the response
  }
);