gpt4 book ai didi

google-apps-script - OAuth2 库产生属性存储配额错误

转载 作者:行者123 更新时间:2023-12-04 01:13:27 28 4
gpt4 key购买 nike

我有一个使用 Google's OAuth2 library 的脚本,最近开始因错误而失败

You have exceeded the property storage quota. Please remove some properties and try again.

我检查了属性,没有发现与我的原始配置有任何意外差异。我的属性的完整字符串化文本长度约为 5000 个字符,远低于 500kB/property store quota最长的单个属性约为 2500 个字符(低于 9kB/值配额)。

我发现只有在使用 Google's OAuth2 library 时才会出现此错误使用服务帐户。但是,如果我包含 library dist直接在我的项目中,错误就消失了。

如果库和本地副本看起来是相同的版本,为什么属性服务的行为会有所不同?

(在我将 OAuth2 库与标准授权代码授予流程一起使用的其他脚本中,我没有遇到任何问题。)

此脚本将复制错误,但需要您 create a service account并按照 getAdminDirectory_() 中的定义设置正确的脚本属性。 (使用 Rhino 解释器。)

/**
* Get a GSuite User.
*/
function getUser() {
var email = "name@exampledomain.com";
var user = AdminDirectory_getUser_(email);
Logger.log(user);
}

/**
* Gets a user from the GSuite organization by their email address.
* @returns {User} - https://developers.google.com/admin-sdk/directory/v1/reference/users#resource
*/
function AdminDirectory_getUser_(email) {
var service = getAdminDirectory_();
if (service.hasAccess()) {
var url = "https://www.googleapis.com/admin/directory/v1/users/" + email;
var options = {
method: "get",
headers: {
Authorization: "Bearer " + service.getAccessToken()
}
};
var response = UrlFetchApp.fetch(url, options);
var result = JSON.parse(response.getContentText());
return result;
} else {
throw service.getLastError();
}
}

/**
* Configures the service.
*/
function getAdminDirectory_() {
// Get service account from properties
var scriptProperties = PropertiesService.getScriptProperties();
var serviceAccount = JSON.parse(scriptProperties.getProperty("service_account"));

// Email address of the user to impersonate.
var user_email = scriptProperties.getProperty("service_account_user");

return OAuth2.createService("AdminDirectory:" + user_email)
// Set the endpoint URL.
.setTokenUrl("https://oauth2.googleapis.com/token")

// Set the private key and issuer.
.setPrivateKey(serviceAccount.private_key)
.setIssuer(serviceAccount.client_email)

// Set the name of the user to impersonate. This will only work for
// Google Apps for Work/EDU accounts whose admin has setup domain-wide
// delegation:
// https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
.setSubject(user_email)

// Set the property store where authorized tokens should be persisted.
.setPropertyStore(scriptProperties)

// Set the scope. This must match one of the scopes configured during the
// setup of domain-wide delegation.
.setScope("https://www.googleapis.com/auth/admin.directory.user");
}

最佳答案

这似乎是一个已知问题。考虑在 this issue 上加一颗星(在左上角)让 Google 开发人员知道您受到了影响。考虑向跟踪器添加评论,其中包含从 #7 请求的详细信息

可能的解决方案:

关于google-apps-script - OAuth2 库产生属性存储配额错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64070184/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com