我尝试调用云身份 API 从管理控制台中提取所有 Google Workspace 设置。最终,我想将特定设置提取到 Google Sheet 中,这就是我拥有电子表格应用程序的原因。当我运行代码时,它不断返回以下错误:
{ 错误:{ 代码:401,消息:'请求缺少所需的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。请参阅https://developers.google.com/identity/sign-in/web/devconsole-project。',状态:'未经认证',详细信息:[ [Object] ] } }
我已启用 Cloud Identity API 和 Sheets API,已将 GCP 项目链接到我的 Apps 脚本项目,已创建服务帐户并下载了 JSON 密钥。我还创建了 OAuth 客户端 ID,但仍然遇到同样的问题。我使用复制并粘贴到不同代码文件中的 JSON 密钥,并尝试使用它来验证 API,但不起作用。
我已经在网上进行了研究,但找不到任何可以实现这一点的东西。
知道如何让它工作吗?
function get_settings(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const settingsSheet = ss.getSheetByName("02. Google Workspace Security Settings");
var url = "https://cloudidentity.googleapis.com/v1beta1/policies"
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json)
console.log(data);
}
**Configuration.gs**
const cloudidentity_credentials = {
"type": "service_account",
"project_id": "security-review-automation",
"private_key_id": "***********************************",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7AKYgLBa/U38y\njXaBfBGMiS0rU4tRh8rzVF+tttW/2saBl5ud+1X6ySNwhCnCVnm4IbfMsKzLX0WT\nSp2Mqs8v2Tc6JZPDBqqXKTwcuUeEwYNerBrhcS0GMpx3tzOtyGNTCpLUoAXa9UPE\n2FW9F8Kc501hjONhY2J/HW4n8hOe+V/JwIowmv912/WR8WkLUyQstFeI0A50QR4D\np1BFlmUYFrgu37f+vTQAyY/1ek91B7NtDvRa+N7Gjt+ccwFqafUHdByMSisGp6zw\nBaNbB43tIYV8pm9rfIkq0ex6l2Bi6SxbUKpcLvC7drnzamO3sy4rgFEjqJIdQAr2\noMplcDHFAgMBAAECggEAKkWxiATHaJ0onAYf85HXCriIsipazEWg0mQwk72IsKu1\nI17g8fO6oiwdO4ZYxUJUlhPjL12B1iBVg0ADAOUs3EFjS1zqu9OyNOUAnnKgsOko\nt/o6QluZ5LSEq8hJYZ+ymjdB7Vg2MqKuXN1Vdl8cYmkkFCjrzpxPi/IccGG33z/W\n7Em2VXLq7mlb1WeUorDdkw43W9hmCcOknR4VgTS1Aeu34Z+kr/b7m+Dz/G9DhSSl\nhUpeB8HN9BEs+4OxPooWwUPYYDggtxBeSXYqqDLt1LHTYU5+9udaRC33MSpCBga1\nDF0c7hHk3MlZexuugkLWBQPOpv9tp4GHeljCZny7CQKBgQD20pGC7h6x00+GA7NR\nVWvx6XNtmVdJzya8iEIkYV5mYPjHUwN4LPsTV2vL7h5uXkgSgDo8lluvU4hGZt6M\nOoJ8hO67N9U8zmC472HgTI0XfZpSZn14DtswgX1Rf6GuniksiSDtHgyAbMFlTguY\nkeIpwmlKHg1nii7RAtY4OLB1aQKBgQDB9KvjRFAaV41nTd366tGqQ/uimRAG6Cn0\n4YEKxyDdwXNrkCSYeRHX93m39ebWd7DzX69UyAIRLmDhtpTP1ZsP0i9MDGLFM8dR\nAb36Y8Ik6i3s0bUHkErOBdkr9TgkRSMQj1TWu2NL2zjPZDMyviW4JKWFNoiDn8lc\n9sFKqUjB/QKBgFr02Aiu5YLUgy64uGEVoJTiWdYetwsNGpJJiE5Nz3Lc83DIx7OG\np/PFuITLOE2l0tt2g3+GTT08BDElgYednC508mDtv1gMGZqtJJ16uFfawn7xI/WV\nS/MBFQRui0+FG1k9I3QeKa895LsHWsCbqgOHkDNvBbONOZlueTD4uxZZAoGATYDD\nntERYTVTH9CRv05N8cewqcyYBuqGuX/S3Metbm96+6RhuzvF0ZLmZIgyccjqQJYf\nrbUufkcWF5up41Lr32qR08WvQjXqk4gqrf9m+PFK4LL7r8YM3j6gBVy7zmKCHH/p\n2tSOXSWAkf7sJn6s++RI7+5WpqIXCLrhikAS/tECgYB6xQ7yrCrCfTxwTX42BmJX\nMBFukX/51kVn98CPMccgami23naUVGJfz9DrZZ/vtrVFoUDehqqruDiXjiFzBZRl\nyqjILD7tGMHk+K58wDFc8GQ1nCB4mTbwbDjlXla//j3C1ISnQLwjtsj5Ggss/vNu\nF8RqCO4EeKTK1s1f8FqMew==\n-----END PRIVATE KEY-----\n",
"client_email": "cloud-identity-policy-app@security-review-automation.iam.gserviceaccount.com",
"client_id": "102944771842644545560",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloud-identity-policy-app%40security-review-automation.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
};
const PROJECT_ID = 'security-review-automation';
访问 Google Cloud Identity API 时的身份验证问题。
您的问题是在项目的提取部分,您没有使用任何身份验证,假设它是您现在拥有的所有代码。我了解您正在使用服务帐户。不幸的是,在 Apps Script 的这个阶段,这是不允许的,因为您无法在 Apps Script 上加载密钥。此外,有多种方法可以进行身份验证。由于您使用的是 Apps Script。我建议使用内置脚本应用程序方法并使用 get0AuthToken()。您可以在此链接上阅读更多信息。
示例代码:
请确保您遵循 API 密钥的设置流程,以确保您的项目具有足够的范围。还有其他解决方法,您也可以阅读 Tanaike 关于此问题的文章。
参考:
ScriptApp(获取 0AuthToken)