【发布时间】:2020-08-24 09:24:02
【问题描述】:
我有一个 winforms 应用程序。此应用程序基本上用于备份和恢复。用户可以登录自己的 google drive 帐户并使用 google drive 下载和上传文件。所有用户都启用他们自己的 google drive API 并使用该帐户的凭据。这是正确的方式吗?(#1问题)
我已经为此使用了 google drive api (v3),但身份验证方法无法按预期工作。
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = this.ClientId,
ClientSecret = this.ClientSecret
},
_scopes,
Environment.UserName,
CancellationToken.None,
new FileDataStore("Drive.Api.Auth.Store")).Result;
此代码在本地工作,也可以在生产环境中工作。但是当我混淆(obfuscator: confuserex) 代码时,这个方法会抛出一个错误。错误;
One or many error occurred
System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) location: System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) location: System.Threading.Tasks.Task`1.get_Result() location: App.Driver.GoogleDrive.DriveConnection.Authentication()
我想知道我可以用不同的方式对用户进行身份验证吗?(#2 问题)比如,打开一个谷歌驱动器登录页面,用户可以从中登录或类似的东西。
注意:在第一次使用此代码登录时,打开了 google drive 登录页面,我登录了我的帐户并获得了 google 应用程序的权限。然后网页转到api键。但这只是第一次发生。我没有这方面的好信息。我按照本教程进行操作;
【问题讨论】:
-
第一次使用应用程序时会设置 cookie,并且 cookie 会在 cookie 到期之前一直有效。
-
@jdweng 你确定 winform 应用程序有 cookie 不只是用于 Web 应用程序吗?
-
本地环境和生产环境有什么区别?我希望在用户机器上安装一个 winform 应用程序。
-
Environment.UserName,
-
您正在使用 GoogleWebAuthorizationBroker。在本地机器上拥有一个作为 Web 应用程序的应用程序并且客户端也在同一台机器上是很常见的。它可以是窗口窗体项目的一部分。
标签: c# winforms google-api google-drive-api google-api-dotnet-client