gpt4 book ai didi

python - 使用 App Engine 在 Python 服务器上推送通知

转载 作者:行者123 更新时间:2023-11-28 22:49:35 27 4
gpt4 key购买 nike

我正在为我的 Android 应用程序实现推送通知机制。

现在我正在尝试运行一个小测试,看看我是否设法通过 http 将推送通知从 python 服务器发送到 GCM,并在 android 客户端中成功接收它。

客户端代码与google的教程完全一样: http://developer.android.com/google/gcm/client.html

有一个名为 DemoActivity 的主要事件负责注册或检索已经存在的注册 ID,还有两个类 GcmIntentService 和 GcmBroadcastReceiver 负责处理从 GCM 服务器到应用程序的消息。

当然,我已经正确设置了 SENDER_ID,而且我确实设法为我的客户端应用程序获取了一个注册 ID。

现在是服务器:

在服务器中,我总是收到以下错误:

HTTP Error 401: Unauthorized

这是我的服务器代码:

    url = "https://android.googleapis.com/gcm/send"
headers = { 'Content-Type' : 'application/json', 'Authorization': 'key=' + SERVER_API_KEY }
values = { 'registration_ids': [CLIENT_REGID]
, 'data': {'test': 'test} }


data = urllib.urlencode(values)
req = urllib2.Request(url, json.loads(values), headers)
response = urllib2.urlopen(req)
the_page = response.read()
self.response.out.write(the_page)

出于安全原因,我省略了服务器 API key 和客户端注册 ID(它们是硬编码的),但我对它们进行了双重和三次检查,它们是正确的。此外,我确保服务器 API key 的格式正确(凭据 -> 创建新 key -> 服务器 key )并确保“允许任何 IP”。

我在互联网上找到的所有解决方案都与服务器 api 中的错误或类似问题有关,但我已经检查过了。感谢各位 helper !

编辑:

在 header 中添加了“key=”,但现在我收到错误请求错误(HTTP 代码 400)

另一个编辑:

更改值对象 abit 并使用 json.loads 发送它,但不是我在客户端中出现此错误(意味着它最终收到来自服务器的通知!!):

Unable to instantiate receiver GcmBroadcastReceiver

有什么想法吗?我原样从 google 复制了示例项目,所以我不知道这里出了什么问题。

最佳答案

auth header should be (注意 key= 部分):

Authorization:key=<your_key_here>

所以你应该像这样设置标题:

headers = { 'Content-Type' : 'application/json', 'Authorization': 'key='+SERVER_API_KEY }

关于python - 使用 App Engine 在 Python 服务器上推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com