javascript - сделать публикацию на странице facebook

Я не использую Javascript SDK, потому что это на стороне клиента, тогда как я делаю вызов на стороне сервера.

Я хочу сделать публикацию на странице, чтобы я мог создать с ней рекламный креатив. Я могу прекрасно выполнить вызов в инструменте Graph API Explorer, но я не могу сделать тот же вызов (с теми же долгоживущими токенами доступа, которые продолжают работать в Graph Explorer) из Javascript. Вот мой код:

  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);

Я поиграл с кучей параметров и данных для того, где pagepost_params идет в HTTP.post, который выдает ошибку (кстати, это HTTP Meteor).

-Помещение всего в 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 в params и все остальное в data дает ошибку: {"error":{"message":"Invalid parameter","type":"FacebookApiException","code":100,"error_subcode":1349125}}.

Еще одна подсказка для всех: если я изменю HTTP.post на HTTP.get и просто поставлю access_token в params и не включу никаких других параметров (в params или в data), вызов завершится успешно, и я увижу прошлые сообщения, которые я сделал на этом страницу через Graph Explorer (только те, у которых есть published: true), поэтому токен доступа и конечная точка работают, просто что-то не так с POST-записью вместо GET-запроса и конкретными параметрами, которые я использую.


person tscizzle    schedule 31.07.2014    source источник


Ответы (2)


Вы пробовали публиковать в /photos вместо /feed? Субкод ошибки такой же, как указано здесь а>

Надеюсь это поможет

person artur    schedule 01.08.2014
comment
Я успешно выполнил вызов в обозревателе графов, поэтому я знаю, что конечная точка правильная. Это одно и то же сообщение, но сообщение Недопустимый параметр довольно расплывчато, поэтому сходство сообщений об ошибках, к сожалению, не является большим доказательством. - person tscizzle; 04.08.2014

Оказалось, что это проблема с HTTP Метеора. Он не очень хорошо обрабатывает вложенный JSON, и мы собираемся отправить для этого запрос на извлечение. Но для тех, кто видит это, важно принять во внимание, что call_to_action может не быть допустимым объектом JSON, и даже если это так, он может не подвергаться строковой обработке/анализу, как ожидалось. Мое исправление заключалось в использовании request.post вместо HTTP.post. (тогда вместо params или data вы используете form. найдите запрос узла https://github.com/mikeal/request )

person tscizzle    schedule 05.08.2014