уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Решил я на днях пока есть немного времени поработать на будущее и дописать компонент для работы с Google OAuth 2.0. Всё-таки как бы ни хотелось использовать только ClientLogin, но чувствую, что скоро  Google таки «перекроет кислород» для разработчиков настольных приложений и уже новые версии API не будут поддерживать старый добрый метод авторизации по логину/паролю. По крайней мере третья версия API Календаря сейчас поддерживает ClientLogin частично и, что будет с другими API — только Google знает. Также ClientLogin не поддерживает двухэтапную авторизацию (когда кроме пароля надо ещё ввести проверочный код из SMS). Вот я и решил, что чем ждать «жаренного петуха» — лучше подготовиться заранее и по-тихоньку мигрировать на свежие версии API, настроить проект в консоли и т.д.

В качестве основы для будущего класса для работы с API через OAuth 2.0. решил воспользоваться уже имеющимся классом — внести в него последние изменения и немного доработать методы отправки GET, POST-запросов. И наткнулся на совершенно непонятную ошибку — на любой запрос сервер почему-то стал выдавать 403 Access Not ConfiguredВообще код 403 Google выдает в том случае, если (как и сказано в сообщении) не настроен доступ к API. Поэтому первое действие, которое было сделано для решения проблемы — это я зашел в Консоль проектов Google и проверил, что API к которому я должен получать доступ включен. Собственно, я и так помнил, что ещё фиг знает когда включал API Calendar и до сих пор не выключил, но, как говориться, лучше перебдеть, чем недобдеть. К сожалению, мне эта проверка никак не помогла.

Второй шаг — проверить как отправляется ключ на сервер. Google «понимает», когда:

  • ключ отсылается в самом URL, например, так: https://www.googleapis.com/oauth2/v1/userinfo?access_token={КЛЮЧ}
  • ключ отсылается в заголовке запросаAuthorization: Bearer {КЛЮЧ}

Со вторым способом были некоторые проблемы, ещё когда я пробовал использовать Tasks API, поэтому решил пересылать ключик в URL. Проверил — ключ отправляется…а обратно —  403 Access Not Configured. Что «как бы намекает», что мне и второй способ решения проблемы не помог.

Третий шаг — протестировал данные для доступа в Playground. Всё ок — запросы проходят успешно. Только перенес ключи в программу — ппц, опять  403 Access Not Configured….

Ну, думаю, то ли лыжи не едут, то ли я уже заработался до такой степени, что очевидных ошибок не вижу…и вправду заработался. Как известно, Google сейчас активно меняет свой внешний вид и вообще всячески «прихорашивается» — сменили Google Developers, посносили старые форумы и возвели на их месте новые более современные и т.д. И, видимо, так разогнались, что где-то что-то не так «подкрутили» в консоли. В итоге: есть проект, есть перечень включенных API, есть настроенный доступ к ним, всяческие Web-примочки для работы с API прекрасно видят настройки проекта и прекрасно работают, а всё, что выходит за пределы Google, например, настольные приложения — нифига не могут «достучаться» до проекта. В итоге решение было следующее — зашел в консоль, удалил старый проект полностью, создал всё по-новой…заработало — 403 код исчез как по волшебству.

Сейчас начал избавлять проект от XML и полностью перехожу на использование JSON. Благо для JSON в Delphi уже имеется «родная» библиотека, да и, если кому надо, то и SuperObject весьма хорош. Но о переходе в следующий раз, как появится ещё свободная минутка для поста в блог.

P.S. Кстати, блог скоро будет переезжать на новый хостинг, т.к. этот тормозит просто жуть…


Из жизни:
Недавно затеял небольшой ремонт дом и решил поставить себе душевую кабину. Если Вы ищите душевые кабины, то мне в свое время посоветовали душевые кабины Leader — качественные удобные, не дорогие. В общем вполне приемлемое сочетание «качество/цена».

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Алексей Азаренко

Очень важный момент ! Программа должна компилироваться на Delphi XE! В Delphi 2010 будет постоянно ошибка вылазить Socket Error 0.

вот ссылка на источник
https://forums.embarcadero.com/message.jspa?messageID=408977