[英]Unexpected error on UrlFetchApp.fetch in Google Apps script
[英]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_name
和image
。
您應該直接在請求的 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.