我概述了将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代码?
答案 0 :(得分:13)
存储身份验证令牌以供将来推送。来自Google C2DM page:
能够存储ClientLogin Auth 令牌和客户端注册ID。该 ClientLogin Auth令牌包含在 发送的POST请求的标头 消息。有关此问题的更多讨论 主题,请参阅ClientLogin for Installed Applications.服务器应存储 令牌并有一个要刷新的策略 它定期。
另请注意,Google会定期刷新Update-Client-Auth
标头中的令牌。有关详细信息,请参阅android-c2dm
群组中的this discussion。
根据我的经验,我无法判断Google何时或为何选择刷新令牌。我每天都经常发生这种情况,有时甚至每周都会发生。