无需授权即可更新公共电子表格中的单元格
本文关键字:电子表格 单元格 授权 可更新 | 更新日期: 2023-09-27 18:09:17
我已经将电子表格设置为公共,我认为这意味着用户不需要授权才能访问并对其进行更改,我应该只需要提供我的客户端id和秘密?(我是唯一一个使用这个应用程序的人,电子表格在我自己的谷歌账户上,这也是应用程序的所有者)
我在这里浏览了文档:https://developers.google.com/google-apps/spreadsheets/?hl=en
我的代码工作得很完美-它基本上只是用函数更新电子表格中的单个单元格,然后返回该单元格的值。
问题是,我不想一直通过网页授权。是否可以跳过需要授权?或者至少通过代码自动授权,而不是通过网页手动授权?
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..
}
}
}
这个脚本在哪里运行?您正在使用的代码示例在每次运行时都试图获取令牌。你有两个选项
- 如果这段代码运行在服务器上,它可以安全地存储刷新令牌,那么手动获取刷新令牌并更改脚本以获取新的访问令牌(使用该刷新令牌)来进行更新。
- 更改为使用服务帐户。服务帐户是为处理这类用例而构建的。您获得一个服务帐户,并在电子表格中授予访问服务帐户的权限(与之共享),并使用服务帐户发出请求以获得可以使用的访问令牌。