簡體   English   中英

如何使用 UrlFetchApp.fetch(url, params) 在 Google Apps Script 中正確查詢 Facebook Graph API?

[英]How to query Facebook Graph API correctly in Google Apps Script using UrlFetchApp.fetch(url, params)?

我正在嘗試從 Facebook Graph 中檢索特定鏈接的一組信息 ( https://www.theverge.com/2019/10/25/20932653/facebook-news-breitbart-mark-zuckerberg-statement-bias )使用 Google Apps 腳本的 API。

我可以使用以下 URL 獲取信息(刪除了訪問密鑰):

https://graph.facebook.com/v5.0/?id=https://www.theverge.com/2019/10/25/20932653/facebook-news-breitbart-mark-zuckerberg-statement-bias&fields=og_object{title,description,site_name,id,image},engagement&metadata=1&access_token=XXXXXXXXXXXXXX

但是當我嘗試在 Google Script Editor 中使用以下代碼時,我收到一個錯誤:

function myFunction() {


  var url = 'https://graph.facebook.com/v5.0/';
  var params = {
    "method": 'GET',
    "id":"https://www.theverge.com/2019/10/25/20932653/facebook-news-breitbart-mark-zuckerberg-statement-bias",
    "fields":"og_object{title,description,site_name,id,image},engagement",
    "access-token": 'XXXXXXXXXXXXXXXXX',
      };

    // Call the Facebook API
  var response = UrlFetchApp.fetch(url, params);


  // Parse the JSON reply
  var json = response.getContentText();
  var data = JSON.parse(json);

  Logger.log(json);

}

錯誤:

Request failed for https://graph.facebook.com returned code 400. Truncated server response: {"error":{"message":"Unsupported get request. Please read the Graph API documentation at https:\/\/developers.facebook.com\/docs\/graph-api","type"... (use muteHttpExceptions option to examine full response) (line 15, file "Code")

如何正確發出請求並返回 JSON 響應?

考慮到您正在嘗試訪問 Graph API 的URL Node

  • 您應該刪除文檔中未指定的請求中指定的fields 它們是: site_nameimage

  • 您應該直接在請求的 URL 中包含查詢字符串。 請注意, params的網址提取的參數的fetch(url, params)不是查詢字符串,而是文檔中描述的一些具體參數。

修復上述要點的代碼的可能修改如下所示:

function myFunction() {
  var base_url = 'https://graph.facebook.com/v5.0/?id=%s&fields=%s&access_token=%s';

  var id_param = encodeURIComponent("https://www.theverge.com/2019/10/25/20932653/facebook-news-breitbart-mark-zuckerberg-statement-bias");
  var fields_param = encodeURIComponent("og_object{title,description,site_name,id,image},engagement");
  var access_token = "XXXXXXXXXXXXXXXXX";

  var url = Utilities.formatString(base_url, id_param, fields_param, access_token);

    // Call the Facebook API
  var response = UrlFetchApp.fetch(url);


  // Parse the JSON reply
  var json = response.getContentText();
  var data = JSON.parse(json);

  Logger.log(json);

}

參考 - 使用的函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM