成功验证(在桌面应用程序中使用Google API .NET)后,Google OAuth会显示错误的网页

时间:2018-08-06 12:02:01

标签: c# google-authentication google-api-dotnet-client

我编写了一些代码,以将约会从我的桌面C#应用程序导出到Google日历。我正在使用.NET的Google Calendar API。

该代码运行良好,但Web浏览器在身份验证后始终显示错误页面(尽管如此,身份验证始终是成功的)。这是我看到的消息:“无法连接。Firefox无法在localhost:xxx(任何端口)中建立与服务器的连接”。它发生在每个浏览器中。

我已经在Google控制台中使用以下参数创建了凭据:  -使用Google Calendar API;  -从其他UI调用API(非Web服务器)  -访问用户数据。

这是我的代码:

public static CalendarService GetCalendarService(String[] Scopes, String userNameGoogle, String ApplicationName)
    {
        UserCredential credential;

        using (var stream =
            new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
        {
            string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            credPath = Path.Combine(credPath, ".credentials/calendar-dotnet-quickstart.json");
            //MessageBox.Show(credPath);

            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                userNameGoogle,
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;

            //MessageBox.Show("Credential file saved to: " + credPath);

        }

            // Create Google Calendar API service.
            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            return service;
    } 

验证时会发生以下情况: See Authenticating Image

...,然后,重定向错误: See Redirection error Image

我花了几个小时阅读帖子,但没有结果(几乎每个人都在使用Web服务器,但不是我的情况)。

请,你能帮我吗?

2 个答案:

答案 0 :(得分:1)

最后,经过这么多天,我得到了答案:问题出在防病毒软件(卡巴斯基免费版)上。

我用来测试的三台计算机都具有相同的防病毒功能。禁用它之后,Web浏览器重定向良好。很抱歉以前没有测试过。

我很欣赏您的答案(@ mjwills,@ Chris,@ u_1826)。非常感谢你。希望这些信息对其他人有帮助。

答案 1 :(得分:-2)

您作为回调URL http://localhost:6773/放置的路径存在吗?