c#Google Calendar API V3忽略了我的其他帐户(多帐户授权)

时间:2014-10-22 18:41:21

标签: c# json calendar google-calendar-api gcal

我一直在努力使用Google Calendar Api(V3)很长一段时间,但我现在可以创建事件并列出给定时间跨度的事件。我在C#中这样做是为了创建一个桌面应用程序。

我有两个不同的Google帐户,我希望能够分别发布到每个日历。使用下面的代码(对于第一个谷歌帐户)我能够连接并发布到一个日历,但是当我使用与第二个谷歌帐户的.json文件不同的表单上使用相同的代码时,它会返回错误当我尝试列出该特定日历中的事件时,找不到[404]。它能够显示日历列表,但列出的日历来自第一个谷歌帐户。我已经在我的网络浏览器中退出了我的谷歌帐户,但我的程序始终与我使用第一个谷歌帐户。

PS:对于第二个Google帐户,我有一个名字不同的.json文件,在使用第二个Google帐户登录时从开发者网站下载。第二个Google帐户的应用名称也有不同的名称。

    public async Task<int> testZZquery()   
    {
        UserCredential credential;
        using (var stream = new FileStream("CMgcal_client_secrets.json", FileMode.Open, FileAccess.Read))
        {
            credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                new[] { CalendarService.Scope.Calendar },
                "user", CancellationToken.None);
        }

        // Create the service.
        var service = new CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "mygcal",
        });

1 个答案:

答案 0 :(得分:0)

这是Oauth令牌决定访问哪个帐户,它不是客户端密钥或您正在使用的项目。您可以愉快地在控制台中使用相同的项目来从两个帐户中检索数据。但是,您需要为每个令牌请求单独的OAuth令牌,然后使用它来访问数据。

Oauth2文档在这里:https://developers.google.com/accounts/docs/OAuth2