GoogleWebAuthorizationBroker.AuthorizeAsync有时会因ServerException崩溃:“网络流读取请求行意外结束。”

时间:2019-05-28 14:47:11

标签: c# .net-core google-oauth

代码(.NET Core 2.0控制台应用程序)

UserCredential credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
    new ClientSecrets
    {
        ClientId = yourAppClientID,
        ClientSecret = yourAppClientSecret,
    },
     scopes,
     "user",
     CancellationToken.None);

有时会挂起一段时间,然后在20秒左右的时间内崩溃,并与Google.Apis.Auth.OAuth2.LocalServerCodeReceiver.LimitedLocalhostHttpServer.ServerException:“网络流读取请求行意外结束。”

大约30-50%的情况会发生这种情况。我只是一次又一次地运行该应用程序。有时会崩溃,有时会起作用。

我还发现,这似乎与该方法必须处理的数据量有关。我目前在范围内有此

{“ https://mail.google.com/”,“ https://www.googleapis.com/auth/userinfo.email”,“” https://www.googleapis.com/auth/userinfo.profile“}

如果我只要求这个,它永远不会超时:

{“ https://mail.google.com/”}

此外,它不会与另一组较短的ClientId / Secret挂起。

此ClientID太长,可能会引起问题(或者可能不会,您永远不知道): XXXXXXXXXXXXX-irs73ni0v0kvqpibnop20uai3kar8geu.apps.googleusercontent.com

尽管这是完全可以的(即使要求了所有范围): XXXXXXXXXXXXX.apps.googleusercontent.com

看起来如果有效载荷超过一定限制或类似限制可能会挂起/崩溃。

我正在使用的Google.Apis.Auth是最新版本1.40.0。

有什么我可以克服的吗?

0 个答案:

没有答案