javascript - 制作facebook页面帖子

时间:2014-07-31 21:07:32

标签: javascript facebook http facebook-graph-api facebook-ads-api

我没有使用Javascript SDK,因为那是客户端,而我正在进行服务器端调用。

我想制作一个网页帖子,以便我可以制作广告素材。我可以在Graph API Explorer工具中完美地完成调用,但是我无法从Javascript进行相同的调用(具有在Graph Explorer中继续工作的相同的长期访问令牌)。这是我的代码:

  tok = <valid and never expiring user token>;
  var pg_tok = <valid and never expiring page token>;
  var act_id = <account_id>;
  var pg_id = <page_id>;
  var call_to_action = 'INSTALL_MOBILE_APP';
  var fb_app_url = 'https://itunes.apple.com/us/app/id284882215';
  var msg = 'Test creative, ya see';
  var pic_url = 'https://s3.amazonaws.com/<path_to_my_image>';

  var ROOT = 'https://graph.facebook.com/';
  var pagepost_endpoint = ROOT+pg_id+'/feed';
  console.log(pagepost_endpoint);
  var pagepost_params = {
    access_token: pg_tok,
    call_to_action: {
      type: call_to_action,
      value: {link: fb_app_url}
    },
    message: msg,
    picture: pic_url,
    published: false
  };
  console.log(pagepost_params);

  var pagepost_res = HTTP.post(pagepost_endpoint, {params: pagepost_params});
  console.log(pagepost_res);

我玩过params与数据有关,其中pagepost_params在HTTP.post中出现错误(即Meteor的HTTP btw)。

- 在params中输入所有内容会产生错误:{"error":{"type":"Exception","message":"No Call To Action Type was parseable. Please refer to the call to action api documentation","code":1373054,"is_transient":false}}

- 在data中输入所有内容会产生错误:{"error":{"message":"(#200) This API call requires a valid app_id.","type":"OAuthException","code":200}}

- 在access_token中放置paramsdata中的其他所有内容都会显示错误:{"error":{"message":"Invalid parameter","type":"FacebookApiException","code":100,"error_subcode":1349125}}

如果我将HTTP.post更改为HTTP.get,并将access_token放入params并且不包含其他参数(在params或{中},则为每个人提供更多线索{1}}),调用成功,我看到我在此页面上通过图形资源管理器(仅有data的帖子)发表过去的帖子,所以访问令牌和端点确实有用,只是有些东西是关于POST而不是GET-ing以及我正在使用的具体参数是错误的。

2 个答案:

答案 0 :(得分:0)

您是否尝试过 / photos 而不是 / feed ?错误子代码与此处Posting to facebook wall using graph api

中提到的相同

希望这有帮助

答案 1 :(得分:0)

原来是Meteor的HTTP问题。它不能很好地处理嵌套的JSON,我们将为此提交拉取请求。但是对于那些看到这一点的人来说,重要的是拿出call_to_action可能不是一个有效的JSON对象,即使它是,它也可能没有按预期进行字符串化/解析。我的修复是使用request.post而不是HTTP.post。 (然后使用params代替dataform。查找节点的请求https://github.com/mikeal/request