0

我正在使用 Google 站点上的 Apps 脚本,并尝试使用 Oauth 将小工具验证为活动用户,以显示活动用户文档列表。我发现几个谷歌小组讨论询问这个问题没有答案,希望我能在这里得到答案。这是我的代码:

var oauthConfig = UrlFetchApp.addOAuthService("gDocs"); oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope=https://docs.google.com/feeds/"); oauthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); oauthConfig.setConsumerKey("myDomainName"); oauthConfig.setConsumerSecret("myCosumerSeceret");

var options = { "method": "GET", "headers": { "GData-Version": "3.0" }, "oAuthServiceName" : "gDocs", "oAuthUseToken" : "always" };

var results = UrlFetchApp.fetch("https://docs.google.com/feeds/default", options);

此时代码不会运行,并且带有小工具的页面会显示: 需要授权才能执行该操作。

任何帮助将不胜感激。

谢谢你,詹姆斯克里姆

4

5 回答 5

1

为了使用 3-legged OAuth 执行授权,您必须使用“匿名”作为 ConsumerKey 和 ConsumerSecret:

 oauthConfig.setConsumerKey("anonymous");
 oauthConfig.setConsumerSecret("anonymous");

另外,请注意正确的提要 url 是https://docs.google.com/feeds/default/private/full.

但是,如果您的目标是获取活动用户的文档列表,为什么不直接使用 Apps Script 提供的 DocsList 服务呢?他们还将负责为您解析结果。

https://developers.google.com/apps-script/service_docslist

于 2012-04-19T22:05:54.930 回答
0

无法访问active user数据。与网站一样,已发布的 Apps 脚本在脚本所有者的帐户下运行,称为effective user. 而且,出于安全考虑,脚本所有者无权访问active user.

因此,@claudio 建议(使用内置 DocsList)是不可能的。

除非我们谈论的是 Google Apps 域(而不是普通消费者帐户)并且脚本所有者是域管理员。在这种情况下,他可以使用 Google Docs List Data API 来模拟其域中的任何用户。

无论哪种方式,无论这种情况,消费者密钥和秘密都应该始终是“匿名的”。

于 2012-04-20T02:59:40.130 回答
0

我有一个 Google Script OAuth 库https://sites.google.com/site/scriptsexamples/custom-methods/google-oauth这将使 OAuth 部分不那么痛苦。

以及当前正在开发的 DriveSrevice 库的一些源代码,这些源代码将触及 Google Script 中缺少的点。 https://sites.google.com/site/scriptsexamples/custom-methods/driveservice

于 2012-05-02T02:09:49.297 回答
0

此特定错误可能与 OAuth 无关,但与将 DocsList 添加到应用程序有关。

请参阅:https ://developers.google.com/apps-script/troubleshooting#common_errors

执行该操作需要授权。

此错误表明脚本缺少运行所需的授权。在脚本编辑器中或从自定义菜单项运行脚本时,会向用户显示授权对话框。但是,当脚本作为服务运行、嵌入 Google 协作平台页面或从触发器运行时,无法显示对话框并显示此错误。要授权脚本,请打开脚本编辑器并运行任何函数。为避免此错误,请记住在向脚本添加新服务或功能后在脚本编辑器中运行该脚本一次。

于 2013-03-26T21:42:21.937 回答
0

这里的答案是不正确的。你可以做你需要的,但不能直接使用 Oauth。相反,发布带有“以当前用户身份运行”选项而不是脚本所有者的 Apps 脚本。然后使用 DriveApp 的 DocsList 来获取用户文件。这里的关键是将服务发布为“以访问应用程序的用户身份运行”。

于 2013-11-21T15:49:52.903 回答