我在Google OAuth 2.0 Playground中对其进行了测试,看起来我可以从网站上返回信息,但是当我设置OAuth2 code from Github时,我似乎无法执行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
答案 0 :(得分:0)
根据协议指南的“Authorizing requests with OAuth 2.0”如果您可以看到该选项,则必须在API控制台中激活Google协作平台API(步骤2)。
我能看到的唯一其他问题是requiring to specify a version为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);
};
答案 1 :(得分:0)
只要代码中提到了范围,就不需要传递它,因此这不是问题。这是我一直尝试的众多变化之一,我责怪错过了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"
,因此请求中不需要.getAccessToken
。我们需要的是访问令牌,虽然所有其他API似乎都能够使用.token_.access_token
,但我必须将其修改为<div class="nav-wrapper">
<a href="index.html" class="brand-logo"> Logo</a>
<a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
<ul class=" right hide-on-med-and-down">
<li> <a href=""> <img src="./img/bg.jpeg" alt="" style="width: 10%;"></a> </li>
<li> <a> username</a></li>
<li> <a href=""> profile</a></li>
</ul>
<ul class="side-nav" id="mobile-demo">
<li><a href="sass.html">Sass</a></li>
<li><a href="badges.html">Components</a></li>
<li><a href="collapsible.html">Javascript</a></li>
<li><a href="mobile.html">Mobile</a></li>
</ul>
</div>
- 这可能仅适用于Google协作平台。
我很感谢那些看过这个并感谢Chris回应的人。