GCP App Script API Auth 仅对两个用户无效(代码:403,"PERMISSION_DENIED")
GCP App Script API Auth not working (code: 403, "PERMISSION_DENIED") for just two users
我通过 Google Cloud Platform 为多个用户部署了 Google 基于 Apps 脚本的软件。其中大部分通过每 x 分钟触发一次 运行。但是,目前有一个脚本通过 Apps 脚本 API.
调用来运行
我昨天做了一些修改。请参阅我能够回答的这个 Stack Overflow 问题:。 (这是通过 API 调用的第二个脚本,但尚未部署太多。)
这可能“破坏”了两个最近加入的用户(最后两个加入几天前)通过 Apps 脚本调用脚本的能力 API。其他用户都很好。我比较了所有用户在客户端的所有内容,所有用户似乎都完全相同。
这是调用 Apps 脚本的客户端代码(在 runOnEdit 中)API:
var token = ScriptApp.getOAuthToken();
var header = {
"Content-Type": "application/json",
"Authorization": "Bearer " + token,
};
var parms = [id];
var data = {
"function": "checkSheet",
"parameters": parms,
"devMode": false,
}
var options = {
"method":"POST",
"headers": header,
"muteHttpExceptions": true,
"payload": JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
对于清单/appsscript.json 文件,我有:
{
"timeZone": "America/New_York",
"dependencies": {
},
"webapp": {
"access": "MYSELF",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/script.external_request"
]
}
昨天刚刚为所有用户添加了 oauthScopes 部分(一个在工作,一个不工作)——上面提到的我的 Stack Overflow 问题的答案。我还尝试为受影响的两个用户添加许多不同的 oauthScope,但没有帮助。
对于仍然有效的所有用户,在他们的客户端(上面的代码所在的位置),他们的 GCP 项目中没有启用 API。看这张图片:
[![在此处输入图片描述][1]][1]
他们的 OAuth 同意屏幕只是默认设置 - 类型:Public、默认范围等
但是,今天早上对于 2 个不工作的用户,当上面的代码运行并调用 Apps Script API 脚本时,响应是:
response = {
"error": {
"code": 403,
"message": "Apps Script API has not been used in project 746982115040 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/script.googleapis.com/overview?project=746982115040 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Google developers console API activation",
"url": "https://console.developers.google.com/apis/api/script.googleapis.com/overview?project=746982115040"
}
]
},
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "SERVICE_DISABLED",
"domain": "googleapis.com",
"metadata": {
"consumer": "projects/746982115040",
"service": "script.googleapis.com"
}
}
]
}
}
但是,这与正在工作的用户没有什么不同 - 他们没有启用 Apps 脚本 API。
因此,我为发生这种情况的两个用户之一启用了 Apps 脚本 API。现在,这样做之后,我收到以下消息:
response = {
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
非常感谢任何帮助!谢谢!
首先,我不得不说学习GCP和所有围绕它的授权是困难的。导致此类问题的原因有很多。
就我而言,最终是“客户的”应用程序脚本项目仍然是“应用程序 Script-managed 云平台项目”,而不是 API 关联的常规 GCP 项目与.
要修复,在 Google Apps 脚本代码编辑器中用于进行 API 调用的脚本,转到菜单/资源/云平台项目。
找到您要与之关联的 GCP 项目编号 - 在我的例子中,它是“服务器的”项目编号,我从中部署了 API。
单击“设置项目”按钮。
现在我的 API 通话正常了!
我通过 Google Cloud Platform 为多个用户部署了 Google 基于 Apps 脚本的软件。其中大部分通过每 x 分钟触发一次 运行。但是,目前有一个脚本通过 Apps 脚本 API.
调用来运行我昨天做了一些修改。请参阅我能够回答的这个 Stack Overflow 问题:
这可能“破坏”了两个最近加入的用户(最后两个加入几天前)通过 Apps 脚本调用脚本的能力 API。其他用户都很好。我比较了所有用户在客户端的所有内容,所有用户似乎都完全相同。
这是调用 Apps 脚本的客户端代码(在 runOnEdit 中)API:
var token = ScriptApp.getOAuthToken();
var header = {
"Content-Type": "application/json",
"Authorization": "Bearer " + token,
};
var parms = [id];
var data = {
"function": "checkSheet",
"parameters": parms,
"devMode": false,
}
var options = {
"method":"POST",
"headers": header,
"muteHttpExceptions": true,
"payload": JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
对于清单/appsscript.json 文件,我有:
{
"timeZone": "America/New_York",
"dependencies": {
},
"webapp": {
"access": "MYSELF",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/script.external_request"
]
}
昨天刚刚为所有用户添加了 oauthScopes 部分(一个在工作,一个不工作)——上面提到的我的 Stack Overflow 问题的答案。我还尝试为受影响的两个用户添加许多不同的 oauthScope,但没有帮助。
对于仍然有效的所有用户,在他们的客户端(上面的代码所在的位置),他们的 GCP 项目中没有启用 API。看这张图片: [![在此处输入图片描述][1]][1]
他们的 OAuth 同意屏幕只是默认设置 - 类型:Public、默认范围等
但是,今天早上对于 2 个不工作的用户,当上面的代码运行并调用 Apps Script API 脚本时,响应是:
response = {
"error": {
"code": 403,
"message": "Apps Script API has not been used in project 746982115040 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/script.googleapis.com/overview?project=746982115040 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Google developers console API activation",
"url": "https://console.developers.google.com/apis/api/script.googleapis.com/overview?project=746982115040"
}
]
},
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "SERVICE_DISABLED",
"domain": "googleapis.com",
"metadata": {
"consumer": "projects/746982115040",
"service": "script.googleapis.com"
}
}
]
}
}
但是,这与正在工作的用户没有什么不同 - 他们没有启用 Apps 脚本 API。
因此,我为发生这种情况的两个用户之一启用了 Apps 脚本 API。现在,这样做之后,我收到以下消息:
response = {
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
非常感谢任何帮助!谢谢!
首先,我不得不说学习GCP和所有围绕它的授权是困难的。导致此类问题的原因有很多。
就我而言,最终是“客户的”应用程序脚本项目仍然是“应用程序 Script-managed 云平台项目”,而不是 API 关联的常规 GCP 项目与.
要修复,在 Google Apps 脚本代码编辑器中用于进行 API 调用的脚本,转到菜单/资源/云平台项目。
找到您要与之关联的 GCP 项目编号 - 在我的例子中,它是“服务器的”项目编号,我从中部署了 API。
单击“设置项目”按钮。
现在我的 API 通话正常了!