Android C2DM Auth токен, один раз или каждый раз
Я излагаю свой план внедрения C2DM в приложение и имею базовый (читай: глупый) вопрос об токенах Auth.
Клиентскому серверу необходимо зарегистрироваться в службе google c2dm, используя белую учетную запись:
Для тестирования:
curl https://www.google.com/accounts/ClientLogin -d Email=theEmailYouWhitelisted -d Passwd=pass****word -d accountType=HOSTED_OR_GOOGLE -d source="your_app_name_and_ver_for_logging_purposes_only" -d service=ac2dm
Мой вопрос в том, случается ли это один раз для каждого приложения на учетную запись c2dm, т.е. получить один генерируемый сервером код аутентификации, используя свою учетную запись белого списка, хранить ее, а затем каждый раз, когда сообщение отправляется, извлекает его и использует:
curl --header "Authorization: GoogleLogin auth=**authFromRegistrationAbove**" "https://android.apis.google.com/c2dm/send" -d registration_id=**phoneRegistrationId(reciever)** -d "data.message=StringToPass" -d collapse_key=something -k
Или вам нужно запросить новый код Auth для каждого нажатого сообщения?
Ответы
Ответ 1
Сохраните токен аутентификации для будущих нажатий. На странице C2DM:
Возможность хранения ClientLogin Auth идентификаторы токена и клиента. Маркер ClientLogin Auth включен в заголовок POST-запросов, которые отправляют Сообщения. Для более подробного обсуждения этого тема, см. ClientLogin для установленных Приложения. Сервер должен хранить токен и обновить политику это периодически.
Также обратите внимание, что Google будет периодически обновлять токен в заголовке Update-Client-Auth
. Подробнее см. это обсуждение в группе android-c2dm
.
Из моего опыта я не могу сказать, когда и почему Google решает обновить токен. Это случалось со мной так часто, как каждый день, а иногда и каждую неделю.