Javascript 谷歌工作表API:“;“讯息”:&引用;请求缺少有效的API密钥。”;

Javascript 谷歌工作表API:“;“讯息”:&引用;请求缺少有效的API密钥。”;,javascript,google-chrome-extension,google-sheets-api,google-oauth,Javascript,Google Chrome Extension,Google Sheets Api,Google Oauth,我正在尝试做一个扩展,它将从页面中获取一些数据并将其发送到GoogleSheet。 我的舱单: "oauth2": { "client_id": "client_id", "scopes": ["https://www.googleapis.com/auth/spreadsheets"] }, "permissions": [ "activeTab", "tabs", "https://*.*/*

我正在尝试做一个扩展,它将从页面中获取一些数据并将其发送到GoogleSheet。 我的舱单:

"oauth2": {
        "client_id": "client_id",
        "scopes": ["https://www.googleapis.com/auth/spreadsheets"] 
    },
    "permissions": [
        "activeTab",
        "tabs", 
        "https://*.*/*",
        "storage",
        "declarativeContent",
        "identity",
        "https://ssl.gstatic.com/",
        "https://www.googleapis.com/*",
        "https://accounts.google.com/",
        "https://sheets.googleapis.com/",
        "https://www.googleapis.com/auth/spreadsheets/"
    ],
    "key": {key}
背景页:

var tokenS;
chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.sync.set({number: value}, function(data) {
  });
    chrome.identity.getAuthToken({
        interactive: false
    }, function(token) { 
        tokenS = token
        console.log(token)
    });
});
function writeData(request, sender){
    myspreadsheetId = "myspreadsheetId " 
    var params = {
        "range":"Sheet1!A1:A",
        "majorDimension": "ROWS",
        "values": [
            [request.name]
        ],
    }
    var xhr = new XMLHttpRequest();
    xhr.open('PUT', 'https://sheets.googleapis.com/v4/spreadsheets/' + myspreadsheetId + '/values/Sheet1!A1:A1?valueInputOption=USER_ENTERED');
    console.log(tokenS)
    xhr.setRequestHeader('Authorization', 'Bearer '+tokenS);
    xhr.send(JSON.stringify(params));
};
chrome.runtime.onMessage.addListener(writeData)
我收到下一个错误:

{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

在谷歌云平台上,我看到了100%的错误率()。我不明白我做错了什么。请提供帮助。

您需要将
中的第二个“键”:{key}
(在第一个代码示例的最后一行)替换为您在谷歌云控制台中为项目生成的API键。 要生成API密钥,您需要导航到凭据页面并单击创建凭据>>API密钥


首先,确保您选择的项目已被选中



其次;从“导航菜单”>>“API和服务”>>“Crendentials”>>“创建凭证”>>“API密钥”

中,您需要将
“密钥”中的第二个“密钥”:{key}
(在第一个代码示例的最后一行)替换为您在谷歌云控制台中为项目生成的API密钥。 要生成API密钥,您需要导航到凭据页面并单击创建凭据>>API密钥


首先,确保您选择的项目已被选中



其次;从“导航菜单”>>“API和服务”>>“Crendentials”>>“创建凭据”>>“API密钥”

您的API密钥似乎无效。@据我所知,有两种方法可以识别您的应用程序:使用OAuth 2.0令牌(也授权请求)和/或使用应用程序的API密钥。“()我正在使用OAuth2.0,一切都应该正常。在发出请求之前,您是否通过了身份验证?@nogui是的,我得到了令牌:'chrome.identity.getAuthToken({interactive:false},function(token){tokenS=token console.log(token)};'然后我使用它:'xhr.setRequestHeader('Authorization'、'Bearer'+令牌);'您的API密钥似乎无效。@Liora Haydon,据我所知“有两种方法可以识别您的应用程序:使用OAuth 2.0令牌(它也授权请求)和/或使用应用程序的API密钥。”()我使用的是OAuth 2.0,一切都应该正常。您在发出请求之前通过了身份验证吗?@nogui是,我得到令牌:'chrome.identity.getAuthToken({interactive:false},函数(令牌){tokenS=tokenconsole.log(令牌)});'然后我使用它:'xhr.setRequestHeader('Authorization'、'Bearer'+令牌);'