pwa推送报错:WebPushError, 是怎么回事?
name: 'WebPushError',
message: 'Received unexpected response code',
statusCode: 400,
headers:
{ 'content-type': 'text/html; charset=UTF-8',
date: 'Fri, 24 Aug 2018 11:16:39 GMT',
expires: 'Fri, 24 Aug 2018 11:16:39 GMT',
'cache-control': 'private, max-age=0',
'x-content-type-options': 'nosniff',
'x-frame-options': 'SAMEORIGIN',
'x-xss-protection': '1; mode=block',
server: 'GSE',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
'accept-ranges': 'none',
vary: 'Accept-Encoding',
connection: 'close' },
body: '<HTML>\n<HEAD>\n<TITLE>UnauthorizedRegistration</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>UnauthorizedRegistration</H1>\n<H2>Error 400</H2>\n</BODY>\n</HTML>\n',
endpoint: 'https://fcm.googleapis.com/fcm/send/cMYLTEcm8xg:APA91bGz2y5mBVOUTi4T57Lbcq_re9IMHdnuq7tVXPfQ0IHuGtKv5Y_HNRAmglqjsvFNLisTvjRqRlmG3oi5Fu_lEnUp3nB9inN2xKRs_Wh92hZA0X_70P7h5BnhmPG15ZyrjIKMbpCg'
}
源代码
server.js
app.post('/register', function(req, res) {
var endpoint = req.body.endpoint
// var key = req.body.key
// var authSecret = req.body.authSecret
// console.log(saveSubscriptionToDatabase)
// //保存用户注册信息
// saveRegistrationDetails(endpoint, key, authSecret)
// console.log(11)
const pushSubscription = {
endpoint: req.body.endpoint,
keys: {
auth: req.body.authSecret,
p256dh: req.body.key
}
}
var body = "thank u for registering"
var iconUrl = "http://localhost:3001/icon.png"
console.log(pushSubscription)
//推送消息
webpush.sendNotification(pushSubscription,
new Buffer(JSON.stringify({
msg: body,
url: "http://localhost:3001/pwa",
icon: iconUrl
}), 'utf8')
).then( response => {
res.sendStatus(201)
}).catch(err => {
console.log(err)
})
})
if("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then(function(registration) {
return registration.pushManager.getSubscription() //获取订阅,如果没有订阅就 订阅
.then( subscription => {
if(subscription) return null
return registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)
})
.then( subscription => {
console.log(subscription)
var rawKey = subscription.getKey ? subscription.getKey('p256dh') : ''
var key = rawKey ? btoa(String.fromCharCode.apply(null, new Uint8Array(rawKey))) : ''
var rawAuthSecret = subscription.getKey ? subscription.getKey('auth') : ''
var authSecret = rawAuthSecret ? btoa(String.fromCharCode.apply(null, new Uint8Array(rawAuthSecret))) : ''
//注册用户
return fetch('/register', {
method: 'post',
headers: new Headers({
"content-type": "application/json"
}),
body: JSON.stringify({
endpoint: subscription.endpoint,
key: key,
authSecret: authSecret
})
})
})
.catch( err => {
console.log('注册失败',err)
// console.log('注册失败!')
})
})
})
.catch(function(err) {
console.log("err", err)
})
}
你确定你的电脑能直接访问google???