我创建了一个使用Google API Client Library for .NET的WPF应用程序。按照这个示例,我编写了下面的代码:
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
Secrets,
new[] { "https://www.googleapis.com/auth/contacts.readonly" },
"user",
CancellationToken.None,
new FileDataStore(TokenStorageName)).Result;
调用 AuthorizeAsync 方法将打开新的浏览器窗口/选项卡,其中包含登录表单。如果用户只是关闭浏览器窗口或选项卡,则会出现问题。我从未获得此调用的结果。
我能知道怎么处理这种情况吗?
我应该更改AuthorizeAsync(...)的源代码吗?
4条答案
按热度按时间dced5bon1#
我解决这个问题的唯一方法是像DalmTo建议的那样添加一个超时周期,这并不理想,但我还没有找到解决这个问题的其他方法。
为此,我使用了以下代码:
yk9xbfzb2#
这是客户端库中的一个错误。No time out on GoogleWebAuthorizationBroker.AuthorizeAsync?当前唯一的选项是自己创建超时。
mzmfm0qo3#
参见GoogleWebAuthorizationBroker.AuthorizeAsync() hangs if browser closed
一般情况下,无法检测到用户关闭浏览器标签/窗口。使用cancellationToken当前不起作用,#968已提交修复。
bxpogfeg4#
我偶然发现了这个线索。这是我的解决方案:
(this是以字符串形式返回用户名的一段代码。)