Django c2dm与OAuth2

时间:2012-06-04 04:52:26

标签: django oauth android-c2dm credentials

我想开发一个Django应用程序来发送消息来google c2dm服务器到andriod device.it使用OAuth2进行授权。     首先,我获得了凭据并将其作为存储存储在存储中,然后我想从中获取凭据     存储并将此凭据与其他参数和标头一起发送到c2dm api。     我可以获得范围https://android.apis.google.com/c2dm的凭据并将其存储在存储中。     请一位人士指导我,如何使用凭据提出请求并发送给https://android.clients.google.com/c2dm/send以进行交付。     提前谢谢,

1 个答案:

答案 0 :(得分:1)

我认为您已经能够在Google OAuth 2.0 Playground上执行第2步 Exchange令牌代码。那么您应该已经获得刷新令牌访问令牌(如果您没有收到刷新令牌,请确认您已选中强制批准提示并在 OAuth 2.0配置中为访问类型选择离线

访问令牌将在一段时间(通常为1小时)后过期,但刷新令牌不会过期。刷新令牌(连同 OAuth客户端ID OAuth客户端密钥)可用于获取新的访问令牌:

curl --data-urlencode "client_id=OAuthClientID"
     --data-urlencode "client_secret=OAuthClientSecret"
     --data-urlencode "refresh_token=RefreshToken"
     -d "grant_type=refresh_token" "https://accounts.google.com/o/oauth2/token"

(替换OAuthClientID,OAuthClientSecret,RefreshToken)。如需进一步阅读,请参阅:Using OAuth 2.0 for Web Server Applications - Offline Access

现在您可以使用此访问令牌和设备的注册ID,使用C2DM向该设备发送消息:

curl -k -H "Authorization: Bearer AccessToken"
     --data-urlencode "registration_id=RegistrationID"
     --data-urlencode "collapse_key=0"
     --data-urlencode "data.message=YourMessage"
     "https://android.apis.google.com/c2dm/send"

(替换AccessToken,RegistrationID和YourMessage)