从Google Apps帐户访问GData日历?

时间:2010-10-23 16:12:52

标签: c# gdata-api

我正在构建一个简单的应用程序,需要访问我的Google Apps帐户中的日历。但我在验证时遇到问题。我尝试了以下代码,但它不起作用:

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

 CalendarEntry entry = (CalendarEntry)service.Get("<eventUrl>");

如何使用Google Apps?我还必须使用其他类型的身份验证吗?


更新

解锁验证码解决了我获取Feed的问题。现在我进入了下一面墙:更新活动。

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

给我GDataRequestException异常:“无法更新只读条目”。

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

3 个答案:

答案 0 :(得分:2)

我建议您使用Fiddler查看您从Google收到的http响应。当我针对谷歌应用程序帐户运行您的代码时,我收到了“Error = CaptchaRequired”响应。这要求我转到https://www.google.com/a/yourgoogleappdomain.com/UnlockCaptcha(显然替换您的域名)。在我这样做后,我能够正确连接。您可能也会收到不同的错误代码,因此请检查并在此处发布。您可能拥有无效密码或无效网址,或者您的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);
}

请务必更换网址内的电子邮件,密码和电子邮件(网址也会对@符号进行编码)。

答案 1 :(得分:0)

    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;
        }
    }

答案 2 :(得分:0)

谷歌提供的另一个解决方案Austin(它对我有用): http://groups.google.com/group/google-calendar-help-dataapi/browse_thread/thread/400104713435a4b4?pli=1