使用 API 密钥 (C#) 将数据写入 Google 电子表格

Yur*_*lov 5 c# google-spreadsheet-api

我有一个应用程序允许我使用 API 密钥从 Google 电子表格中读取数据。我只是让 HTTP GET 到这个地址并得到一个带有数据的响应。

https://sheets.googleapis.com/v4/spreadsheets/18soCZy9H4ZGuu**********BeHlNY1lD8at-Pbjmf8c/values/Sheet1!A1?key=AIzaSyAYJ***********pB-4iKZjYf4y0vhXP8OM
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 HTTP PUT 写数据来寻址时

https://sheets.googleapis.com/v4/spreadsheets/18soCZy9H4ZGuu**********BeHlNY1lD8at-Pbjmf8c/values/Sheet1!A4?valueInputOption=RAW?key=AIzaSyAYJ***********pB-4iKZjYf4y0vhXP8OM
Run Code Online (Sandbox Code Playgroud)

它给了我 401 错误。发出 PUT 请求的代码:

 using (WebClient wc = new WebClient())
 {
     byte[] res = wc.UploadData(link, "PUT", Encoding.ASCII.GetBytes(textBox1.Text));
     MessageBox.Show(Encoding.Default.GetString(res));
 }
Run Code Online (Sandbox Code Playgroud)

此外,电子表格是完全公开的,任何人都可以在未经授权的情况下读写。我的猜测是我不能使用 API Key 将数据写入电子表格,唯一的方法是使用 OAuth。

更新: 所以我刚刚尝试使用 Google.Apis.Sheets.v4 来写入值,现在我几乎 100% 确定 API 密钥不能用于将数据写入 Google 电子表格。好吧,那我就用 OAuth 2.0。

小智 3

好吧,也许你是对的,这里的问题是 API_KEY 本身。

\n\n

如果您检查Sheets API 文档,就会发现您的应用程序发送到 Google Sheets API 的每个请求都需要向 Google 识别您的应用程序。有两种方法可以识别您的应用程序:使用OAuth 2.0 token(也授权请求)和/或使用应用程序的API key. 以下是确定使用哪些选项的方法:

\n\n
    \n
  • 如果请求需要授权(例如请求个人的私有数据),则应用程序必须随请求提供 OAuth 2.0 令牌。应用程序还可以提供 API 密钥,但这不是必须的。

  • \n
  • 如果请求不需要授权(例如对公共数据的请求),则应用程序必须提供 API 密钥或 OAuth 2.0 令牌,或者两者都提供\xe2\x80\x94任何对您来说最方便的选项。

  • \n
\n\n

因此,这意味着OAuth 2.0 令牌或 API 密钥都适用于您的情况,因为该文件是公开的。但问题出在您正在执行的 PUT 请求中,我们可以在这里假设 API 密钥无法使用它。但是,我们有替代方案,那就是 OAuth。

\n\n

我还在这里找到了一个可能对您有帮助的相关问题

\n