Google drive api Windows.net Google.API挂起对InsertMediaUpload.Upload的调用——没有超时

Google drive api Windows.net Google.API挂起对InsertMediaUpload.Upload的调用——没有超时,google-drive-api,google-docs,google-docs-api,Google Drive Api,Google Docs,Google Docs Api,我正在使用GoogleApis从FileResource命名空间和upload方法使用InsertMediaUpload类将文档上载到Google Drive。它对我来说运行良好,但以下情况除外: 调用InsertMediaUpload后,会出现一个浏览器窗口,要求用户登录他们的Google(通常是Gmail)帐户。如果用户只是关闭浏览器窗口而不是单击“接受”或“取消”,则当前进程将被挂起。我想应该有一两分钟的超时时间,这样如果用户选择不登录当前的windows应用程序,它就不会无限期地挂起和停

我正在使用GoogleApis从FileResource命名空间和upload方法使用InsertMediaUpload类将文档上载到Google Drive。它对我来说运行良好,但以下情况除外:

调用InsertMediaUpload后,会出现一个浏览器窗口,要求用户登录他们的Google(通常是Gmail)帐户。如果用户只是关闭浏览器窗口而不是单击“接受”或“取消”,则当前进程将被挂起。我想应该有一两分钟的超时时间,这样如果用户选择不登录当前的windows应用程序,它就不会无限期地挂起和停止工作

这里不需要示例代码。如果用户不再对上载文档感兴趣,则只需关闭浏览器窗口而不是单击“取消”,会发生什么情况?破坏(或挂起)当前进程不应该是一种可能性,但这就是发生的情况。人们希望关闭浏览器窗口会产生与单击“取消”按钮相同的效果——这只是选择不上传到Google Drive的另一种方式,对吗


提前感谢您的帮助。

您不应该从InsertMediaUpload类获取身份验证消息。您应该自己处理身份验证。您获得的身份验证浏览器窗口是为了方便您的开发,而不是为了生产代码。请看一看。在这个快速启动中,您将看到处理身份验证的
GetAuthorization
方法。根据您的需要修改此方法,您将得到您想要的。

我现在没有要检查的代码,但在某个时候会出现一个浏览器窗口,要求用户使用用户名和密码登录到他们的Google Drive。用户可以选择“允许”或“取消”,但第三个选项是完全关闭浏览器窗口。现在,这应该与单击Cancel按钮具有相同的效果,但它会挂起当前进程。当我写上面的消息时,我认为这是在调用InsertMediaUpload类的Upload方法时发生的,但是可能传递了一个delgate来上载以进行身份验证。好的,让我解释一下为什么会发生这种情况。您可能正在使用google api客户端的本地Web服务器身份验证模块。此程序设置Web服务器并等待oauth2callback被触发。这就是为什么当用户在不接受或取消的情况下关闭窗口时,它会永远暂停。同样,这不是生产代码,一切都按预期进行。您应该自己处理身份验证以防止出现这种情况。我认为身份验证浏览器窗口是必需的,因为我的应用程序不知道也不应该知道任何有关访问Google Drive的用户凭据的信息。我的应用程序只接收为我创建的授权令牌,如下所示:1)我的CreateAuthenticator方法具有以下代码:私有静态IAAuthenticator CreateAuthenticator(){var provider=new NativeApplicationClient(GoogleAuthenticationServer.Description);provider.ClientIdentifier=CLIENT_ID;provider.ClientSecret=GetClientSecret();返回新的OAuth2Authenticator(provider,GetAuthorization);}2)My GetAuthorization检查以前是否提供了授权令牌以供重用。如果没有,则调用AuthorizationMgr.RequestNativeAuthorization,将NativeApplicationClient和包含以下单个字符串的scopes字符串数组作为参数传递: