Проблема с авторизацией в календаре Google Android - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь создать приложение, которое обращается к пользовательскому календарю Google с помощью OAuth. У меня есть код, который получает все нужные токены, и они сохраняются в некоторых настройках. Я использовал урок здесь , чтобы сделать все это, кстати. Я успешно изменил область действия и запросил URL, чтобы получить необходимые токены. Проблема возникает, когда я на самом деле пытаюсь использовать токен. Вместо информации календаря я возвращаю некоторый HTML-код с текстом «Неизвестная ошибка заголовка авторизации 401». URL-адрес запроса, который я использую:

 https://www.google.com/calendar/feeds/default/allcalendars/full

и объем:

 http://www.google.com/calendar/feeds/

Я попытался заменить «default» своим адресом электронной почты (который я также использовал для OAuth), но безрезультатно. Я использую неправильный URL? если нет, что еще может вызвать эту ошибку? Я искал несколько дней, чтобы найти кого-то, кто получил доступ к Календарю с помощью OAuth, но все, что я нашел, это то, что люди сдаются, потому что это слишком сложно или не работает.

EDIT:

Я считаю, что мой заголовок правильный, вот пример:

 OAuth oauth_token="************-********-**********-****", 
 oauth_consumer_key="anonymous", 
 oauth_version="1.0", 
 oauth_signature_method="HMAC-SHA1", 
 oauth_timestamp="1303161387", 
 oauth_nonce="*******************", 
 oauth_signature="*******************"

Это извлечено непосредственно из моего приложения, и из того, что я смог найти, оно выглядит правильным для меня, но я все еще получаю ошибку выше (Неизвестная ошибка заголовка авторизации 401).

1 Ответ

2 голосов
/ 17 апреля 2011

Заголовок авторизации должен быть "Авторизация: OAuth oauth_nonce =" deadbeefdeadbeef "oauth_version =" 1.0 "....

См. http://code.google.com/apis/accounts/docs/OAuth_ref.html#RequestToken. Можно, предположительно, также, но параметры авторизациив строке запроса или в теле сообщения POST, но я не пытался это сделать.Как отмечено в комментариях ниже, Google теперь, по крайней мере, с фидом Календаря, добавляет строку запроса 'gsessionid =' и перенаправление;и поэтому обработчик перенаправления должен создать новый одноразовый номер и временную метку и создать новую подпись, убедившись, что gsessionid добавлен к базовой строке подписи в правильном лексикографическом порядке (предшествующему любой из переменных oauth_).

...