Google站点API是否可以被授权



我在Google OAuth 2.0操场上对其进行了测试,看起来我可以从网站返回信息,但是当我从GitHub设置OAuth2代码时,我似乎无法做到我得到的urlfetchapp请求
the error returned code 403. Truncated server response: Not authorized to access this feed我不确定这是否是因为它在API控制台中未启用,但是我在那里或在高级Google服务下都找不到。

这是我跌倒的代码部分:

var service = getService();
  if (service.hasAccess()) {
  Logger.log("initial xml has access "service.hasAccess());
    var headers = {
      "Authorization": "Bearer " + service.getAccessToken()
    };
    var MyAttachmentsURL = 'https://sites.google.com/feeds/content/[DOMAIN]/[SITE NAME]?kind=attachment';
    var response = UrlFetchApp.fetch(MyAttachmentsURL, headers);
  };

Github的脚本为我工作,我在消息出现时授权。这就是我的范围选项卡中的内容:

7个脚本所需的OAuth范围:
https://sites.google.com/feeds
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/script.container.ui
https://www.googleapis.com/auth/script.external_request
https://www.googleapis.com/auth/script.scriptapp
https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/userinfo.email

根据协议指南的"使用OAuth 2.0的授权请求",如果您可以看到该选项(步骤2(,则必须在API控制台中激活Google站点API。


我唯一可以看到的其他问题是要求将版本指定为GData-Version: 1.4

,您的代码会更改为这样的东西:

var service = getService();
  if (service.hasAccess()) {
  Logger.log("initial xml has access "service.hasAccess());
    var headers = {
      "GData-Version": "1.4",
      "Authorization": "Bearer " + service.getAccessToken()
    };
    var MyAttachmentsURL = 'https://sites.google.com/feeds/content/[DOMAIN]/[SITE NAME]?kind=attachment';
    var response = UrlFetchApp.fetch(MyAttachmentsURL, headers);
  };

只要代码中提到范围,就不需要传递,因此这不是问题。这是我一直在尝试的众多变体之一,我怪我错过了post method,因为它是凌晨。该代码(暂时(有效。

  var service = getService();
  if (service.hasAccess()) {
  Logger.log("initial xml has access "+service.hasAccess());
    var headers = {
//      "GData-Version" : "1.4",
      "Authorization" : "Bearer "+service.token_.access_token
    };
    var params = {"headers": headers, 'method':'get', 'muteHttpExceptions':true};     
    var MyAttachmentsURL = 'https://sites.google.com/feeds/content/[DOMAIN]/[SITE NAME]?kind=attachment';
    var response = UrlFetchApp.fetch(MyAttachmentsURL, params);
    };

看来"GData-Version" : "1.4"在响应标头中返回,因此在请求中不需要。需要的是访问令牌,尽管所有其他API似乎都可以使用.getAccessToken,但我必须将其修改为.token_.access_token-这可能仅适用于Google站点。

我感谢那些看过这个的人,并感谢克里斯的回应。

最新更新