Я использую Google Contacts Data Api, чтобы получить все контакты пользователя, следуя документации здесь https://developers.google.com/google-apps/contacts/v3/
сначала я использовал Google Auth для аутентификации пользователей в приложении, используя следующий код
string authSubUrl = AuthSubUtil.getRequestUrl("http://localhost:62439/ContactImporter/GoogleContacts.aspx", "https://www.google.com/m8/feeds/", true, true);
Response.Redirect(authSubUrl);
через секунду после того, как пользователь успешно вошел в систему, я перенаправляю на страницу GoogleContacts.aspx с токеном запроса, предоставленным Google, а затем пытаюсь получить контакты по следующему коду
if (!string.IsNullOrEmpty(Request["token"]))
{
GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cp", "alpha");
RequestSettings rs = new Google.GData.Client.RequestSettings("alpha",Request["token"]);
ContactsRequest cr = new ContactsRequest(rs);
Feed<Contact> f = cr.GetContacts();
foreach (Contact entry in f.Entries)
{
foreach (EMail email in entry.Emails)
{
Response.Write("\n" + email.Address);
}
}
}
этот код работал примерно 4 или 5 дней, но теперь он не работает и выдает мне следующую ошибку
Удаленный сервер возвратил ошибку: (401) Не авторизован.
в Google.GData.Client.GDataRequest.Execute ()
в Google.GData.Client.GDataGAuthRequest.Execute (Int32 retryCounter)
в Google.GData.Client.GDataGAuthRequest.Execute ()
в Google.GData.Client.Service.Query (Uri queryUri, DateTime ifModifiedSince, String etag, Int64 & contentLength)
в Google.GData.Client.Service.Query (Uri queryUri, DateTime ifModifiedSince)
в Google.GData.Client.Service.Query (FeedQuery feedQuery)
на Google.GData.Client.Feed 1.get_AtomFeed()
at Google.GData.Client.Feed
1.d__0.MoveNext ()
в GoogleContacts.Page_Load (Отправитель объекта, EventArgs e) в d: \ Рабочая папка \ API's \ ContactImporter \ GoogleContacts.aspx.cs: строка 25
в System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e)
в System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, EventArgs e)
в System.Web.UI.Control.OnLoad (EventArgs e)
в System.Web.UI.Control.LoadRecursive ()
в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)
Есть предложения по устранению этой ошибки?