Railsでwebpush通知をしたかったので、この記事(Rails4におけるブラウザプッシュ通知(Web Push Notifications)実装)が超分かりやすいんで、参考に作っていたら....
Chromeでこういうエラーが出て、なかなか通知することができませんでした。
#<Net::HTTPBadRequest 400 UnauthorizedRegistration readbody=true>
調べてもいまいち原因がわからなかったので、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"}
Chromeで試したよりエラーが詳しかったのでぐぐってみると、どうやらexpiresionを設定しなければ駄目なそうです。参考記事
Webpush.payload_send(
message: payload,
endpoint: endpoint,
p256dh: p256dh,
auth: auth,
vapid: {
subject: "mailto:sender@example.com",
public_key: '...',
private_key: '...',
expiration: 12 * 60 * 60 #これ
}
end
expiration
を設定するとChromeでもFirefoxでも無事通知することができました。
他にも悩んでいる方の解決の糸口になれば幸いです