【发布时间】:2014-12-17 15:39:29
【问题描述】:
我正在编写一个小型桌面应用程序,它将文件上传到谷歌驱动器。所以当我登录我的谷歌帐户时一切都很好,但是当我没有登录时,程序会在此页面“https://accounts.google.com/ServiceLogin”上启动浏览器。我正在使用此代码:
ClientSecrets secret = new ClientSecrets();
secret.ClientId = "my_client_id";
secret.ClientSecret = "my_client_secret";
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secret, new[] { DriveService.Scope.Drive }, "user", CancellationToken.None).Result;
var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "TestUpload" });
File body = new File();
body.Title = "Title123";
body.Description = "Decription123";
body.MimeType = "image/png";
byte[] arr = System.IO.File.ReadAllBytes(fileName);
System.IO.MemoryStream stream = new System.IO.MemoryStream(arr);
FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "image/png");
request.Upload();
那么如何在不启动浏览器的情况下以编程方式进行授权?
【问题讨论】:
-
你通常不能使用 OAuth,协议的全部意义在于你永远不需要将密码直接告诉想要对你进行身份验证的应用程序。通常,如果您最终解决了这个限制并且发现您的应用的 API 密钥将被撤销。
-
@ScottChamberlain 所以有没有办法不提升浏览器?
标签: c# google-drive-api