是否可以在Google联系人API访问中使用AuthorizationCodeMvcApp进行授权?

时间:2015-03-07 03:02:12

标签: oauth-2.0 google-calendar-api google-oauth google-contacts google-api-dotnet-client

我目前正在开发一个网络应用,用于同步用户的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通讯录?如果是这样的话?

1 个答案:

答案 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。