Я несколько дней ломал голову, пытаясь получить список календарей от Google, используя DotNetOpenAuth.
Я могу успешно получить список контактов, используя образцы DotNetOpenAuth.Я интегрировал его с моим доменом, используя OpenId + OAuth.Все отлично работает, чтобы получить список контактов.
Так что оттуда я изменил код, чтобы попытаться получить список календарей, и я продолжаю получать 401 Несанкционированную ошибку.
Я знаю, что этоавторизация, потому что я могу получить список контактов.У кого-нибудь есть пример кода, как они получают календари или события календаря, используя DotNetOpenAuth с Google ???
Спасибо
Обновление:
Спасибодля ответа.Я прочитал все, что могу достать.Вот что я сделал до сих пор
Шаг 1: Я создал новую GetCalendarEndPoint в GoogleConsumer.cs
private static readonly MessageReceivingEndpoint GetCalendarEndpoint = new MessageReceivingEndpoint("https://www.google.com/calendar/feeds/default", HttpDeliveryMethods.GetRequest);
Шаг 2: Далее я создал новый метод GetCalendars, созданный по образцу после GetContactsМетод в GoogleConsumer.cs - (Восстановить dll и т. Д.)
public static XDocument GetCalendars(ConsumerBase consumer, string accessToken, int maxResults/* = 25*/, int startIndex/* = 1*/) {
if (consumer == null)
{
throw new ArgumentNullException("consumer");
}
var request = consumer.PrepareAuthorizedRequest(GetCalendarEndpoint, accessToken);
var response = consumer.Channel.WebRequestHandler.GetResponse(request);
string body = response.GetResponseReader().ReadToEnd();
XDocument result = XDocument.Parse(body);
return result;
Шаг 3: В своем приложении я изменил ScopeURI для URI календаря из GoogleConsumer следующим образом
private IAuthenticationRequest GetGoogleRequest()
{
Realm realm = Request.Url.Scheme + Uri.SchemeDelimiter + Global.GoogleTokenManager.ConsumerKey + "/";
IAuthenticationRequest authReq = relyingParty.CreateRequest(GoogleOPIdentifier, realm);
// Prepare the OAuth extension
string scope = GoogleConsumer.GetScopeUri(GoogleConsumer.Applications.Calendar);
Global.GoogleWebConsumer.AttachAuthorizationRequest(authReq, scope);
// We also want the user's email address
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
authReq.AddExtension(fetch);
return authReq;
}
Однако, когда я запускаю приложение, я получаю 401 Unauthorized, когда я выполняю следующий вызов
var calendars = GoogleConsumer.GetCalendars(Global.GoogleWebConsumer, State.GoogleAccessToken, 25, 1);
. Я также проверил, существует ли токен State.GoogleAccess, просто отобразив его на моем экране, прежде чем запускать метод, которыйделает этот вызов.
Опять же, если я произвожу
var calendars = GoogleConsumer.GetContacs(Global.GoogleWebConsumer, State.GoogleAccessToken, 25, 1);
, то это работает ???????Спасибо за помощь.