У меня есть Dojo SubmitButton с jsId = "
Я ломал себе голову несколько дней, пытаясь получить список календарей от Google с помощью DotNetOpenAuth.
Я могу успешно получить список контактов с помощью образцов DotNetOpenAuth. Я интегрировал его со своим доменом, используя OpenId + OAuth. Все отлично работает, чтобы получить список контактов.
Итак, оттуда я изменил код, чтобы попытаться получить список календарей, и продолжаю получать ошибку 401. Unauthorized.
Я знаю, что это авторизация, потому что я могу получить Список контактов. Есть ли у кого-нибудь пример кода, как они получают календари или события календаря с помощью 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);
, то он работает ??????? Спасибо за помощь.