代码之家  ›  专栏  ›  技术社区  ›  Niels Bosma

从Google Apps帐户访问GData日历?

  •  2
  • Niels Bosma  · 技术社区  · 14 年前

    我正在建立一个简单的应用程序,也需要访问我的谷歌应用程序帐户的日历。但我在认证方面有问题。我尝试了以下代码,但它不起作用:

     Service service = new Service("<appname>");
     service.setUserCredentials("<email>", "<password>");
    
     CalendarEntry entry = (CalendarEntry)service.Get("<eventUrl>");
    

    你如何让它与谷歌应用程序一起工作?有没有其他类型的认证,我必须使用谷歌应用程序?


    更新:

    entry.Title.Text = "Foo";
    entry.Update();
    

    给出GDataRequestException异常:“无法更新只读项”。

    我使用的是我在kalendarsettings下得到的私有日历xml地址: https://www.google.com/calendar/feeds/ _%40 group.calendar.google.com/private--/basic

    3 回复  |  直到 14 年前
        1
  •  2
  •   bkaid    14 年前

    我建议使用 Fiddler 看看你从Google得到了什么http响应。当我对我的google apps帐户运行你的代码时,我得到了一个“Error=CaptchaRequired”的响应。这要求我去 https://www.google.com/a/yourgoogleappdomain.com/UnlockCaptcha (显然替换为您的域)。在我做了这些之后,我就可以正常地连接了。你可能也会得到一个不同的错误代码,所以检查并张贴在这里。您可能有一个无效的密码或无效的url,或者您的google apps管理员禁用了此功能。这是我的示例代码:

    var calendarService = new CalendarService("company-app-version");
    calendarService.setUserCredentials("<email>", "<password>");
    var eventQuery = new EventQuery("http://www.google.com/calendar/feeds/user%40domain.com/private/full");
    var eventFeed = calendarService.Query(eventQuery);
    foreach (var atomEntry in eventFeed.Entries)
    {
        Console.WriteLine(atomEntry.Title.Text);
    }
    

    请确保替换URL中的电子邮件、密码和电子邮件(URL也对@符号进行编码)。

        2
  •  0
  •   Gary Kindel    14 年前
        using Google.GData.Client;
        public bool ValidateGoogleAccount(string login, string password)
        {
            try
            {
                Service bloggerService = new Service("blogger", "App-Name");
                bloggerService.Credentials = new GDataCredentials(login, password);
                string token = bloggerService.QueryAuthenticationToken();
    
                if (token != null)
                    return true;
                else
                    return false;
            }
            catch (Google.GData.Client.InvalidCredentialsException)
            {
                return false;
            }
        }
    
        3
  •  0
  •   Gautam Jain    13 年前
    推荐文章