我正在构建一个简单的应用程序,需要访问我的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
答案 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