无需授权即可更新 public 电子表格中的单元格?

Updating cell in public spreadsheet without need for auth?

我已将电子表格设置为 public,我认为这意味着用户无需授权即可访问和更改它,我应该只需要提供我的客户 ID 和密码? (我是唯一会使用此应用程序的人,电子表格在我自己的 Google 帐户上,该帐户也是该应用程序的所有者)

我在这里浏览了文档:https://developers.google.com/google-apps/spreadsheets/?hl=en

我的代码运行完美 - 它基本上只是用函数更新电子表格中的单个单元格,然后 returns 该单元格的值。

问题是,我不想一直通过网页授权。是否可以跳过授权的需要?或者至少通过代码自动授权,而不是通过网页手动授权?

using Google.GData.Client;
using Google.GData.Spreadsheets;

namespace Spreadsheet{
    class Program{
        static void Main(){
            OAuth2Parameters parameters = new OAuth2Parameters();
            parameters.ClientId = "client-id-here";
            parameters.ClientSecret = "client-secret-here";
            parameters.RedirectUri = "urn:ietf:wg:oauth:2.0:oob"; //I'm not even sure what this is, I assume it's only necessary for web based applications
            parameters.Scope = "https://spreadsheets.google.com/feeds https://docs.google.com/feeds";

            //This is where the user is required to navigate to a page and retrieve access code
            string authorizationUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
            parameters.AccessCode = Console.ReadLine();

            OAuthUtil.GetAccessToken(parameters);
            string accessToken = parameters.AccessToken;

            GOAuth2RequestFactory requestFactory =
      new GOAuth2RequestFactory(null, "Spreadsheet", parameters);
            SpreadsheetsService service = new SpreadsheetsService("Spreadsheet");
            service.RequestFactory = requestFactory;

            //spreadsheet related code here..
        }
    }
}

这个脚本运行ning在哪里?您使用的代码示例会在您每次 运行 时尝试获取令牌。你有两个选择

  1. 如果此代码 运行 在服务器上并且它可以安全地存储刷新令牌,则手动获取刷新令牌并将脚本更改为仅获取新的访问令牌(使用该刷新令牌)以进行更新。
  2. 更改为使用服务帐户。服务帐户旨在处理此类用例。您获得一个服务帐户,并在电子表格中授予对服务帐户的访问权限(与其共享),并使用服务帐户请求获取您可以使用的访问令牌。