使用Python中的加密有效负载进行Web推送通知

时间:2016-12-10 11:25:21

标签: django python-2.7 google-cloud-messaging firebase-cloud-messaging

有人可以解释如何使用Python / Django

向Payload for Chrome发送通知

我这样做 -

    fcm_url = "https://fcm.googleapis.com/fcm/send"
    encoded = WebPusher(subscription_info).encode(json.dumps(data))

    crypto_key = "dh=" + encoded["crypto_key"]
    salt = "salt=" + encoded['salt']

    headers = {'Authorization': 'key=' + gcm_key, 'Content-Type': 'application/json', }
    headers.update({'crypto-key': crypto_key, 'content-encoding': 'aesgcm', 'encryption': salt})    

    fcm_data = {"raw_data":base64.b64encode(encoded.get('body')), "registration_ids": ['eYXdX1V94XY:APA91bHPQdnlQiVwe5HmWnRQrtpOnHzAJ4kEHNgB8GrEZ_YxSgtwz-0gvcpUFBAb3_eVXOVcJAjvVotGfKl9jLGM_X6nZb76YzFBZazMu1auIDAXhXjUgFDHm7E2ffRpBD70rpD1qC1r']}

    resp = requests.post(fcm_url,data=json.dumps(fcm_data),headers=headers)

输出: -

{"multicast_id":6483153199368608385,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1481362362576359%958b01adf9fd7ecd"}]}

但通知不包含上述指定的数据。

1 个答案:

答案 0 :(得分:1)

您似乎正在混合Web推送协议和Firebase云消息传递API。

您是要尝试向普通的开放式网络PushSubscription发送请求,还是尝试发送到Firebase令牌?

如果您使用适用于Web的Firebase Messaging SDK,则无需加密有效负载(这是使用firebase消息传递SDK的主要原因之一)。

如果您只使用普通的开放式网络API而未触及Firebase Messaging SDK,我会查看:https://github.com/web-push-libs/pywebpush