Android C2DM认证令牌,是一次性的还是每次都需要?

14

我正在规划将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

或者说,每次推送信息时,您是否需要请求新的授权代码?

1个回答

13

存储认证令牌以备将来使用。从Google的C2DM页面

能够存储ClientLogin认证令牌和客户端注册ID. ClientLogin认证令牌包含在发送消息的POST请求的头文件中. 关于这个话题的更多讨论,请参见安装应用程序的ClientLogin。服务器应该存储令牌并有定期刷新的政策。

此外,注意谷歌会定期在Update-Client-Auth头部刷新令牌。关于详细信息,请参阅android-c2dm组中的此讨论。

根据我的经验,我无法确定谷歌何时或为什么选择刷新令牌。这对我来说发生得像每天一样频繁,有时是每周一次。


之前的 authTokens 是否仍然有效?对我来说似乎是这样的。 - calebds
根据我的经验,旧的身份验证令牌仍然可以使用。但是没有记录它能够持续多久或者支持多少条消息。 - gnuf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接