我目前正在开发一个网络应用,用于同步用户的Google联系人列表。
目前,我可以正常同步日历。不幸的是,在接触的情况下,相同的方法似乎不可行。
以下是我对Calendars v3的处理方法。
public async Task<ActionResult> Index(CancellationToken cancellationToken)
{
var user = User.Identity.GetUserId();
var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
AuthorizeAsync(user, cancellationToken);
if (result.Credential != null)
{
CalendarService service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = result.Credential,
ApplicationName = "Calendar API Sample",
});
var list = service.CalendarList.List().Execute();
var calendar = list.Items.ElementAt(0);
var events = service.Events.List(calendar.Id).Execute();
foreach (var e in events.Items)
{
try {
EventLoot.data.Entities.Event model = new EventLoot.data.Entities.Event();
model.User_id = User.Identity.GetUserId();
model.Venue = e.Location != null ? e.Location : "" ;
model.Name = e.Summary;
model.Date = DateTime.Today;
model.start_date = e.Start.DateTime;
model.end_date = e.End.DateTime;
model.start_time = e.Start.DateTime.Value.TimeOfDay;
model.end_time = e.End.DateTime.Value.TimeOfDay;
dbcontext.Events.Add(model);
dbcontext.SaveChanges();
}
catch (Exception a)
{
Console.Write(a);
}
}
list.ToString();
return View("index");
}
我喜欢这种方法,因为DataStore处理确保我有一个刷新令牌。这种方法是否也适用于Google通讯录?如果是这样的话?
答案 0 :(得分:2)
不幸的是,谷歌联系人支持旧的GData协议,并且API在用于.NET的新Google API客户端库中没有相应的库。
但是......我也有好消息,看看这个帖子 - How to create a ContactsService using Google Contact API v3 with OAuth v2 UserCredentials。
您可以为联系人API添加新范围,&#34; https://www.google.com/m8/feeds/&#34;除日历范围外,在用户完成身份验证后,您可以使用存储在DataStore中的令牌来使用GData API for Contacts。