错误的设备令牌苹果推送通知

时间:2019-12-03 04:30:48

标签: c# .net .net-core

我陷入了苹果推送通知。在https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#//apple_ref/doc/uid/TP40008194-CH11-SW1中的文档之后,我使用私钥创建了标头和有效负载以生成令牌,但是在调用api:https://api.development.push.apple.com:443/3/device/之后,它告诉了错误的设备令牌。在jwt.io中检查它是否表示无效令牌。 任何人都知道这个问题或想法。 谢谢!

这是.net核心代码:

var header = JsonConvert.SerializeObject(new { alg = "ES256", kid = keyId });
var payload = JsonConvert.SerializeObject(new { iss = teamId, iat = ToEpoch(DateTime.UtcNow) });
var key = CngKey.Import(Convert.FromBase64String(p8privateKey), CngKeyBlobFormat.Pkcs8PrivateBlob);
            using (ECDsaCng dsa = new ECDsaCng(key))
            {
                dsa.HashAlgorithm = CngAlgorithm.Sha256;
                var headerBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(header));
                var payloadBasae64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(payload));
                var unsignedJwtData = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(header)) + "." + System.Convert.ToBase64String(Encoding.UTF8.GetBytes(payload));
                var unsignedJwtDataBytes = Encoding.UTF8.GetBytes(unsignedJwtData);
                var signature =
                dsa.SignData(unsignedJwtDataBytes);
                return unsignedJwtData + "." + System.Convert.ToBase64String(signature);
            }
        }

0 个答案:

没有答案
相关问题