Javascript Web Push:我在哪里可以获得“auth”密钥?
Posted
技术标签:
【中文标题】Javascript Web Push:我在哪里可以获得“auth”密钥?【英文标题】:Javascript Web Push: where can I get "auth" key? 【发布时间】:2016-11-10 07:24:17 【问题描述】:我开始使用网络推送通知;我不知道在哪里可以找到auth
键:
var pushSubscription =
endpoint: '< Push Subscription URL >',
keys:
p256dh: '< User Public Encryption Key >',
auth: '< ???? User Auth Secret ???? >'
;
我可以从ServiceWorker>registeration.pushManager.getSubscription()
获得endpoint
和p256dh
,但不能从auth
密钥中获得。
谢谢
【问题讨论】:
【参考方案1】:您可以使用getKey
方法获取p256dh
和auth
(请参阅the specs 或the example from the specs)。
在 getSubscription
承诺返回的 PushSubscription
对象上调用 JSON.stringify
更加简单。
【讨论】:
如果你想在 JS 中使用对象(获取密钥),不要摆弄 ab2string 转换或 pushSubscription.keyKeys()...(剧透:不会工作。)只要做这个:var subJSObject = JSON.parse(JSON.stringify(pushSubscription)); var endpoint = subJSObject.endpoint; var auth = subJSObject.keys.auth; var p256dh = subJSObject.keys.p256dh;
@mondjunge 你是完全正确的。我选择了艰难的方法,而我从所有这些方法中获得的最大收益都是胡言乱语。下次我将查看手头的具体问题,而不是尝试一般解决方案,例如尝试查找转换方法。【参考方案2】:
使用 Typescript,PushSubscription
对象应该有一个名为 toJSON
的方法。就用那个吧。
const sub: PushSubscription = YOUR_RAW_PUSH_SUBSCRIPTION;
const pushSubscription =
endpoint: sub.endpoint,
expirationTime: sub.expirationTime,
keys:
p256dh: sub.toJSON().keys.p256dh,
auth: sub.toJSON().keys.auth
;
【讨论】:
以上是关于Javascript Web Push:我在哪里可以获得“auth”密钥?的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2,将 css、javascript、图像放在哪里
在 javascript chrome 控制台中使用 push() 方法的无限内部数组