Как разместить изображение на странице facebook с помощью фрагмента кода Google App Script? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь настроить небольшое приложение на основе Google App Script и Google листов На данный момент я могу получить фид Facebook и подключиться к приложению facebook через библиотеку Oauth2 и получить токены

Так что я изо всех сил пытаюсь написать код для отправки в Facebook,

В настоящее время я получил потоки страниц на facebook, но документация пост-формата от facebook ссылается на javascript SDK, и здесь я не использую SDK, а API-интерфейс графа ссылается на запросы POST и GET, я думаю, что это тоже не сработало. Так что это мои коды для получения токена Facebook и фида страниц.

Кто-то назвал это дубликатом, но эти вопросы и ответы не вписываются в мой вопрос. Я хочу, чтобы формат поста в Facebook был добавлен, если он с полезной нагрузкой.

Я могу публиковать на страницах токен доступа к странице, а не токен доступа пользователя. и вставка этого маркера доступа к странице также вызывает ту же ошибку.

Обновлен код, но ошибка выглядит следующим образом


Запрос не выполнен для https://graph.facebook.com/v3.2/PAGE/feed?message=hello?access_token=TOKEN, возвращен код 403. Сокращенный ответ сервера: {"error": {"message": "(# 200) При публикации в группе требуется приложение, установленное в группе, и \\ n либо разрешение publish_to_groups ... (используйте опцию muteHttpExceptions для проверки полного ответа) (строка 53, файл "FB postinf")

код обновлен

 function example() {

var service = getService();
  if (service.hasAccess())
   var data = {
    "message" : "Me Testing",
    //"slug" : "me-testing",
   // "text_to_subscribe" : "true"
  };
  var payload = JSON.stringify(data);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var url = "https://graph.facebook.com/v3.2/PAGENAME/feed?message=hello?access_token=ManuallyPastedTOKEN";
  // + '?access_token=' + encodeURIComponent(service.getAccessToken());
  var response = UrlFetchApp.fetch(url, options);
  }


Это использует OAuth2 GET FEED

function sasublish(){

var service= getService()
if (service.hasAccess()) {

  var url = 'https://graph.facebook.com'
    + '/pagename/feed'
    +'?fields='+ encodeURIComponent("name,full_picture,message,attachments{subattachments,url}")

  +'&access_token='+ service.getAccessToken();


    var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});

    var json = response.getContentText();
    var jsondata = JSON.parse(json);
 } 

1 Ответ

0 голосов
/ 26 марта 2019

После нескольких попыток я понял, как публиковать на страницах с помощью скриптов Google App

Нужен фрагмент oAuth2 и Facebook.gs Приложение Facebook должно быть в режиме разработки, если оно создано после августа 2018 года .setScopes ('publish_pages, manage_pages, pages_show_list') следует добавить в facebook.gs ссылку на фрагмент facebook.gs

function example() {
var service = getService();
  if (service.hasAccess())
 var urls ='https://graph.facebook.com/v2.6/PAGEID?fields=access_token'; //specified page token
   //  var url = 'https://graph.facebook.com/v2.6/me/accounts?';   //tokens along with pages 
 
  var response = UrlFetchApp.fetch(urls, {       //make url and urls changes
      headers: {
        'Authorization': 'Bearer ' + service.getAccessToken()
      }
    });
    var result = JSON.parse(response.getContentText());
    Logger.log(JSON.stringify(result , null, 2));
   //Logger.log(JSON.stringify(result.data[0].access_token))

 
 
 var datas = {
    "message" : "Me Testing",
    //"slug" : "me-testing",
   // "text_to_subscribe" : "true"
  };
  var payload = JSON.stringify(datas);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var url = "https://graph.facebook.com/v3.2/PAGEID/feed"
 + '?access_token=' + encodeURIComponent(result.data[0].access_token);
  // + '?access_token=' + encodeURIComponent(result.access_token);//direct pagetoken
  var response = UrlFetchApp.fetch(url, options);
  Logger.log('successfully posted to facebook page ',response)
  }
...