0

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

4

1 回答 1

1

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

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

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)。如需进一步阅读,请参阅:将 OAuth 2.0 用于 Web 服务器应用程序 - 离线访问

现在您可以使用此访问令牌和设备的注册 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)

于 2012-06-15T20:08:15.790 回答