Tag: web push

在Rails中生成VAPID公钥并将其传递给Javascript

为了使用带有VAPID的Push API,我需要一个applicationServerKey : serviceWorkerRegistration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: applicationServerKey // we’ve got it with getApplicationServerKey() defined below }); 我用Ruby在服务器端生成它: ecdsa_private_key = OpenSSL::PKey::EC.new ‘prime256v1’ ecdsa_private_key.generate_key sender.vapid_private_key = ecdsa_private_key.to_pem ecdsa_public_key = OpenSSL::PKey::EC.new ecdsa_private_key ecdsa_public_key.private_key = nil sender.vapid_public_key = ecdsa_public_key.to_pem 然后我必须下载它: getApplicationServerKey: function () { return new Promise(function (resolve, reject) { var request = new Request(‘https://example.com/application_server_key’); fetch(request).then(function (response) { […]

使用VAPID进行网络推送:400/401未经授权的注册

首先,我已经检查了这些问题,没有任何运气: Web Push API Chrome,返回“未经授权的注册” [WebPush] [VAPID]请求失败,400 UnauthorizedRegistration 我正在尝试为我正在处理的Web应用程序实现Web推送通知。 目前,我已达到以下目标: 创建VAPID密钥对( 使用本指南 )。 注册服务工作者(只有服务工作者,我认为不再需要manifest.json )。 将用户订阅到服务器(订阅数据将存储在数据库中)。 使用webpush gem发送推送通知。 设置完成后,一切正常(在localhost和远程计算机上)。 但是,在几个小时后(12到24小时之间),通知将停止在远程计算机上工作(localhost工作正常)。 在此之后,从服务器端(Rails)发送推送通知时会引发以下错误: Chrome: UnauthorizedRegistration 400 (无额外信息)。 Firefox: {“code”: 401, “errno”: 109, “error”: “Unauthorized”, “more_info”: “http://autopush.readthedocs.io/en/latest/http.html#error-codes”, “message”: “Request did not validate Invalid bearer token: Auth > 24 hours in the future”} 出现此错误后,我尝试取消订阅并在每次访问页面时重新订阅用户。 重新订阅完成后,db上的订阅字段会更新,但仍会抛出错误,并显示相同的信息。 浏览器和服务工作者都不会抛出任何错误。 我试图通过在Chrome Dev Tools控制台上放置一些js代码,取消注册服务工作者,并重置推送通知权限来手动强制重新订阅,但没有解决错误。 […]