0

我想将谷歌文档存储在谷歌云存储上。我是管理员用户,可以访问谷歌云存储。我使用这段代码:

 function myFunction() {

   var base="https://www.googleapis.com/auth/devstorage.full_control"
  var fetchArgs=googleOAuth_('provisioning',base)
  fetchArgs.payload=<content_data_that you want to put on GCS>
  fetchArgs.method='PUT'
  fetchArgs. contentType=<content_type>
  fetchArgs.host="<bucket_name>.storage.googleapis.com"
  var url='https://storage.googleapis.com/<bucket_name>/<file_name>' 
  var result=UrlFetchApp.fetch(url,fetchArgs)
    }

function googleOAuth_(name,scope) {
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
    oAuthConfig.setConsumerKey(consumerKey);
  oAuthConfig.setConsumerSecret(consumerSecret);
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}

当我运行此代码时,它会给出 503 服务器错误。任何建议都会对我有所帮助。

这个问题已经解决了。用更正更新了代码。

4

3 回答 3

0

我还没有尝试过,但它看起来可能会简化你的生活:

OAuth服务

作者:James Ferreira - GoogleScriptExamples.com

该库无需使用 OAuth。它有一种方法 getAuth(' ', optUserScope) 并适用于所有 Google API。请参见此处的示例。

项目密钥:MM5uQxqjwkMiuJW2zE50SgUF7jOZt2NQ8

请参阅: https ://sites.google.com/site/scriptsexamples/custom-methods/google-oauth

于 2012-11-28T08:48:24.050 回答
0

Google Cloud Storage 文档提到,如果您使用 OAuth 1.0,您还需要传递 API 密钥。

https://developers.google.com/storage/docs/json_api/v1/how-tos/authorizing

于 2012-10-19T20:17:33.417 回答
0

我还尝试使用 Google Apps Script 中的 Google Cloud Storage API。我找到了以下库:

https://github.com/googleworkspace/apps-script-oauth2

那里的文档实际上更有帮助,因为它向我展示了我根本不需要这个库:

即使您的 API 不在其中,您仍然可以使用 Apps 脚本为您获取 OAuth2 令牌。只需编辑脚本的清单以包含您的 API 所需的其他范围。当用户授权您的脚本时,他们还将被要求批准这些额外的范围。然后在代码中使用方法 ScriptApp.getOAuthToken() 来访问脚本已获取的 OAuth2 访问令牌,并将其传递到 UrlFetchApp.fetch() 调用的 Authorization 标头中。

访问示例NoLibrary以查看如何完成此操作的示例。

对我(和后代)的主要收获:

  1. 使其appsscript.json可见并添加所需oauthScopes的所有API 范围以及https://www.googleapis.com/auth/script.external_request.

  2. UrlFetchApp.fetch()第二个参数设置为headers: {Authorization: 'Bearer ' + ScriptApp.getOAuthToken()}

  3. 忽略&key=[YOUR_API_KEY]在 Google API 示例中看到的。

于 2021-07-22T21:07:28.977 回答