Я работаю над серверным решением для мобильного приложения, написанного на Ruby. Частью наших требований является уведомление наших распределенных клиентов о необходимости звонить домой для получения обновленной полезной нагрузки, которая C2DM Google сервис кажется идеальным для.
Я уже создал прототип и протестировал все, что нам нужно, и убедился, что решение будет работать на моем локальном компьютере. (Используя библиотеку C2DM для Ruby, ссылка ведет на мой собственный форк для решения проблемы с SSL-сертификатом. где сертификат не распространяется на поддомен Google api
.) За исключением одного серьезного сбоя в API для входа в клиент:
При развертывании на наших серверах приложений для разработки мне не удалось передать сообщения. Углубившись в результаты, я обнаружил, что мы получили ответ от Google, в котором говорилось CAPTCHAREQUIRED
и токен проверки, а также URL-адрес изображения проверки, несмотря на то, что я использовал действительный auth_token
, созданный локально во время разработки. Поэтому я использовал свой собственный браузер, чтобы запросить CAPTCHA и решить ее, затем использовал curl, чтобы отправить ответ с нашего сервера разработки на ClientLogin, после чего я смог получить auth_token
, необходимые для передачи сообщений.
Это меня беспокоило, что при развертывании в производственной среде возникнет аналогичная проблема аутентификации. Итак, мы с товарищем по команде провели еще несколько исследований и выяснили, что, хотя никто не знает точных спецификаций относительно того, когда может истечь срок действия auth_token
, по крайней мере один предполагаемый инженер Google заявил, что они действительны в течение «по крайней мере двух недель». Тогда предлагаемое решение состоит в том, что, когда ответ ClientLogin указывает CAPTCHAREQUIRED
, вы отправляете сообщение по электронной почте оператору/разработчику для решения CAPTCHA и используете страницу/инструмент в своем серверном приложении, чтобы отправить ответ, чтобы получить новый auth_token
. (Если это то, что я должен сделать, я думаю, механический турок Amazon спасает положение?)
Есть, конечно, реальная вероятность того, что эта информация устарела, но это не меняет того факта, что мне все еще нужно решать CAPTCHA, по крайней мере, во время первоначальной установки. Мы контролируем производственную среду, так что это не очень большая проблема, просто небольшое неудобство, поскольку мы не знаем, что именно вызывает ответ на запрос CAPTCHAREQUIRED
. (Мы предполагаем, что это ранее неизвестный IP-адрес учетной записи.)
Я не могу отделаться от мысли, что делаю что-то ужасно, ужасно неправильное здесь.