C2DM с ClientLogin на сервере

Я работаю над серверным решением для мобильного приложения, написанного на 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-адрес учетной записи.)

Я не могу отделаться от мысли, что делаю что-то ужасно, ужасно неправильное здесь.


person cfeduke    schedule 21.12.2011    source источник


Ответы (1)


Вопрос о сроке жизни токена авторизации все еще остается в воздухе. Официально C2DM все еще находится в стадии бета-тестирования, поэтому сотрудники Google не хотят брать на себя твердую цифру. Понятно, но обидно.

Тем не менее, по моему опыту, если вы используете специальную учетную запись Google для целей C2DM, проблема CAPTCHA никогда не возникает.

person Seva Alekseyev    schedule 23.01.2012
comment
До сих пор мы не получали проверку CAPTCHA после первоначальной установки (для ее решения требовался сеанс консоли IRB в кластере — с тех пор я написал страницу для будущих развертываний), хотя срок действия токенов истекает через одну-две недели. . На данный момент я просто собираюсь повторно аутентифицироваться через задание cron каждые три дня. - person cfeduke; 23.01.2012
comment
1-2 недели? Сумасшествие. Приму во внимание, спасибо. - person Seva Alekseyev; 23.01.2012