繁体   English   中英

Google Calendar API C#凭据引发异常

[英]Google Calendar API C# credentials throw an exception

我正在遵循本教程: https : //developers.google.com/google-apps/calendar/instantiate我的代码:

public static void Main()
        {
            UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                new ClientSecrets()
                {
                    ClientId = "actualclientid",
                    ClientSecret = "actualclientsecret"
                },
                new[] { CalendarService.Scope.Calendar },
                "user",
                CancellationToken.None).Result;

问题是,这部分代码使我抛出异常:

{“无法加载文件或程序集'Microsoft.Threading.Tasks.Extensions.Desktop,版本= 1.0.16.0,Culture =中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。”: Microsoft.Threading.Tasks.Extensions.Desktop,版本= 1.0.16.0,区域性=中立,PublicKeyToken = b03f5f7f11d50a3a“}

PS .:虽然很可能与该问题无关,但是在Google上设置我的项目以获取凭据时,我选择了Installed Application-> Other(因为我假设这就是控制台应用程序)

编辑:添加https://www.nuget.org/packages/Microsoft.Bcl.Async/1.0.166-beta似乎已经解决了该问题。 现在剩下的代码:

 var service = new CalendarService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "Calendar API Test"
    });

    var x = service.Events.List("actualcalendarid").OauthToken;

    Console.WriteLine(x);
    Console.ReadLine();

返回一个空行,即使我运行该应用程序时它确实请求访问我的日历等。 我忘记了什么吗?

确保已将所有引用添加到项目中。

需要使用NuGet安装以下组件

-Install-Package Google.Apis.Calendar.v3 –Pre
-Install-Package Google.Apis -Pre
-Install-Package DotNetOpenAuth -Version 4.3.4.13329
-Install-Package Google.Apis.Auth.Mvc -Pre

并将引用Microsoft.Threading.Tasks.Extensions添加到您的项目。

编辑:您不检索数据,因为您不执行查询。

var result = service.Events.List("primary").Execute();


    private async Task<UserCredential> GetCredential()
    {
        UserCredential credential = null;
        try
        {
            using(var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
            {
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    new[] { CalendarService.Scope.Calendar },
                    "user", CancellationToken.None, new FileDataStore(""));
            }
        }
        catch (IOException ioe)
        {
            Debug.WriteLine("IOException" + ioe.Message);
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Exception" + ex);
        }
        return credential;
    }

    private CalendarService GetCalenderService(UserCredential credential)
    {
        CalendarService service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "Calendar Sample"
            });
        return service;
    }

    private Events GetEvent(string CalendarId)
    {
        var query = this.Service.Events.List(CalendarId);
        query.ShowDeleted = false;
        query.SingleEvents = true;
        return query.Execute();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM