{"id":7983,"date":"2025-02-07T16:18:53","date_gmt":"2025-02-07T07:18:53","guid":{"rendered":"https:\/\/www.lancard.com\/blog\/?p=7983"},"modified":"2025-03-12T11:22:15","modified_gmt":"2025-03-12T02:22:15","slug":"fcm-browser","status":"publish","type":"post","link":"https:\/\/www.lancard.com\/blog\/2025\/02\/07\/fcm-browser\/","title":{"rendered":"Firebase Cloud Messaging \u3092\u30d6\u30e9\u30a6\u30b6\u3067\u5229\u7528\u3059\u308b"},"content":{"rendered":"\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nAndroid\u3084iOS\u306e\u30a2\u30d7\u30ea\u3067\u3001Push\u901a\u77e5\u3092\u3059\u308b\u306e\u306b\u3088\u304f\u4f7f\u3046Firebase Cloud Messaging\u3067\u3059\u304c\u3001\u30d6\u30e9\u30a6\u30b6\u3067\u3082\u4f7f\u3046\u4e8b\u304c\u51fa\u6765\u308b\u3089\u3057\u3044\u306e\u3067\u3001\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002<br><a href=\"https:\/\/qiita.com\/nanin\/items\/f3382a871eb04bf6828e\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u3053\u3061\u3089<\/a>\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306b\u3057\u3066\u3044\u307e\u3059\u3002<br><br>\u5927\u91cf\u306e\u901a\u77e5\u3092\u8a66\u3057\u305f\u3044\u6642\u306b\u3001Android\u3084iOS\u30a2\u30d7\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u305b\u306a\u304f\u3066\u6e08\u3080\u306e\u3067\u3001\u691c\u8a3c\u306e\u52a9\u3051\u306b\u306a\u308b\u304b\u3082\u77e5\u308c\u307e\u305b\u3093\uff08\u30a2\u30d7\u30ea\u306e\u52d5\u4f5c\u3092\u8a66\u3059\u306e\u306b\u306f\u5411\u3044\u3066\u3044\u307e\u305b\u3093\u304c\uff09\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-e24f049926333335beff5e1057a0cda7\">\u203b\u8a66\u3059\u306b\u306f\u3001https\u63a5\u7d9a\u53ef\u80fd\u306a\u30b5\u30fc\u30d0\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\uff08localhost\u3067\u3082\u53ef\u80fd\u306a\u3088\u3046\u3067\u3059\u304c\u3001\u5927\u91cf\u306e\u901a\u77e5\u3092\u8a66\u3059\u306b\u306f\u3001\u8ab0\u304b\u3089\u3067\u3082\u30a2\u30af\u30bb\u30b9\u51fa\u6765\u305f\u65b9\u304c\u826f\u3044\u3068\u601d\u3046\u306e\u3067\uff09\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n\n<!--more-->\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Web\u30a2\u30d7\u30ea\u306e\u767b\u9332<\/h2>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<a href=\"https:\/\/console.firebase.google.com\/\">Firebase Console<\/a>\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u9078\u629e\u3001\u3042\u308b\u3044\u306f\u4f5c\u6210\u3057\u307e\u3059\u3002<br>\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u3046\u306e\u3067\u30a2\u30d7\u30ea\u3092\u8ffd\u52a0\u306e\u4e2d\u304b\u3089\u3001\u30a6\u30a7\u30d6\u3092\u9078\u629e\u3002\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-15.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"114\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-15-602x114.png\" alt=\"\" class=\"wp-image-8045\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-15-602x114.png 602w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-15-400x76.png 400w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-15-768x146.png 768w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-15.png 800w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u30a2\u30d7\u30ea\u540d\u3092\u9069\u5f53\u306b\u5165\u308c\u3066\u3001\u30a2\u30d7\u30ea\u3092\u767b\u9332\u3092\u62bc\u3057\u307e\u3059\u3002<br>Firebase Hosting\u3092\u4f7f\u3044\u305f\u3044\u306a\u3089\u3001\u8a2d\u5b9a\u306b\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u3066\u4e0b\u3055\u3044\u3002\n<\/div>\n<\/div>\n\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"245\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-10.png\" alt=\"\" class=\"wp-image-8017\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-10.png 474w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-10-400x207.png 400w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/figure>\n\n\n\n\n<h3 class=\"wp-block-heading\">Firebase SDK\u306e\u8ffd\u52a0<\/h3>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nFirebase SDK\u306e\u8ffd\u52a0\u3067\u3059\u304c\u3001const firebaseConfig = {&#8230;}; \u306e\u90e8\u5206\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304a\u304d\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-11.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"244\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-11-602x244.png\" alt=\"\" class=\"wp-image-8021\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-11-602x244.png 602w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-11-400x162.png 400w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-11.png 752w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-c26f316dca326355cf66ba95707adc0d\">\u3053\u306efirebaseConfig\u306e\u90e8\u5206\u306f\u3001\u6b21\u306eVAPID Key\u3068\u4e00\u7dd2\u306b\u3001\u30d6\u30e9\u30a6\u30b6\u306eToken\u767b\u9332\u753b\u9762\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002<br>\u30b3\u30d4\u30fc\u3057\u5fd8\u308c\u305f\u3089\u3001\u8a2d\u5b9a\uff1e\u5168\u822c\u30bf\u30d6\uff1e\u30de\u30a4\u30a2\u30d7\u30ea\uff1e\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\uff1e[\u30a2\u30d7\u30ea\u540d]\u304b\u3089\u30b3\u30d4\u30fc\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u6700\u4e0b\u90e8\u306e\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u9032\u3080\u3001\u3067\u5b8c\u4e86\u3067\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">\u9375\u30da\u30a2\u4f5c\u6210(VAPID Key)<\/h3>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u5de6\u4e0a\u6b6f\u8eca\u30a2\u30a4\u30b3\u30f3\u306e\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u3092\u9078\u629e\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"405\" height=\"181\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-7.png\" alt=\"\" class=\"wp-image-7991\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-7.png 405w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-7-400x179.png 400w\" sizes=\"auto, (max-width: 405px) 100vw, 405px\" \/><\/a><\/figure>\n\n\n\nCloud Messaging\u30bf\u30d6\u3092\u9078\u3093\u3067\u3001\u4e0b\u90e8\u306e\u30a6\u30a7\u30d6\u306e\u69cb\u6210\u3067Generate Key Pair\u3092\u62bc\u3057\u3066\u3001\u3053\u3053\u3067\u8868\u793a\u3055\u308c\u308b\u9375\u30da\u30a2\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002\u79d8\u5bc6\u9375\u306e\u65b9\u306f\u4e0d\u8981\u3067\u3059\u3002\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"208\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-8-602x208.png\" alt=\"\" class=\"wp-image-7992\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-8-602x208.png 602w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-8-400x138.png 400w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-8-768x266.png 768w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-8.png 885w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-8ffcbd403f2fe8c63044fda7235dbd53\">\u3053\u308c\u3082\u3001\u30d6\u30e9\u30a6\u30b6\u306eToken\u767b\u9332\u753b\u9762\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u3053\u306e\u6642\u70b9\u3067\u3001\u30d6\u30e9\u30a6\u30b6\u306eToken\u3092\u53d6\u5f97\u3059\u308b\u4e8b\u304c\u51fa\u6765\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Firebase Admin SDK<\/h3>\n\n\n\n\n\u7d9a\u3044\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u30bf\u30d6\u3092\u9078\u629e\u3057\u3001Firebase Admin SDK\u306e\u79d8\u5bc6\u9375\u3092\u751f\u6210\u3057\u307e\u3059\u3002<br>\u4e0a\u306eFirebase SDK\u306fToken\u306e\u53d6\u5f97\u306b\u4f7f\u3044\u307e\u3059\u304c\u3001\u3053\u306eFirebase Admin SDK\u306fPush\u901a\u77e5\u306b\u4f7f\u3044\u307e\u3059\u3002<br>\u65b0\u3057\u3044\u79d8\u5bc6\u9375\u3092\u751f\u6210\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u3001\u8b66\u544a\u304c\u51fa\u307e\u3059\u304c\u751f\u6210\u3092\u9078\u629e\u3059\u308b\u3068\u3001json\u30d5\u30a1\u30a4\u30eb\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002<br>\u3068\u8a00\u3063\u3066\u3082\u79d8\u5bc6\u9375\u306e\u4f5c\u6210\u304c\u76ee\u7684\u306a\u306e\u3067\u3001\u4eca\u56de\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4f7f\u3044\u307e\u305b\u3093\u3002\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"408\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-9-602x408.png\" alt=\"\" class=\"wp-image-7993\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-9-602x408.png 602w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-9-400x271.png 400w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-9-768x521.png 768w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-9.png 867w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">\u30d6\u30e9\u30a6\u30b6\u304b\u3089Token\u767b\u9332<\/h2>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nhttps\u3067\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u5834\u6240\u306b\u3001\u4ee5\u4e0b\u306ehtml\u3092\u914d\u7f6e\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-a41cdd8e3635c03af78a06b9e04b5a0d\">\u203bfirebaseConfig\u3068VAPID_PUBKEY\u3092\u3001<br>Firebase SDK\u306e\u8ffd\u52a0\u3067\u53d6\u5f97\u3057\u305ffirebaseConfig\u3001<br>\u9375\u30da\u30a2\u4f5c\u6210(VAPID Key)\u3067\u4f5c\u6210\u3055\u308c\u305f\u5024<br>\u306b\u5165\u308c\u66ff\u3048\u3066\u4e0b\u3055\u3044\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.2\" \/&gt;\n&lt;title&gt;FCM Token\u767b\u9332&lt;\/title&gt;\n&lt;script type=\"module\"&gt;\n    \/\/ Import the functions you need from the SDKs you need\n    import { initializeApp } from \"https:\/\/www.gstatic.com\/firebasejs\/11.2.0\/firebase-app.js\";\n    import { getAnalytics } from \"https:\/\/www.gstatic.com\/firebasejs\/11.2.0\/firebase-analytics.js\";\n    import { getMessaging, getToken } from \"https:\/\/www.gstatic.com\/firebasejs\/11.2.0\/firebase-messaging.js\";\n    \/\/ TODO: Add SDKs for Firebase products that you want to use\n    \/\/ https:\/\/firebase.google.com\/docs\/web\/setup#available-libraries\n\n    \/\/ Your web app's Firebase configuration\n    \/\/ For Firebase JS SDK v7.20.0 and later, measurementId is optional\n    const firebaseConfig = {\n        \/\/ Firebase SDK\u306e\u8ffd\u52a0\u3067\u53d6\u5f97\u3057\u305ffirebaseConfig\u3067\u4e0a\u66f8\u304d\n    };\n\n    \/\/ Initialize Firebase\n    const app = initializeApp(firebaseConfig);\n    const analytics = getAnalytics(app);\n\n    \/\/ \u767b\u9332\n    const btn = document.getElementById('regist');\n    btn.onclick = function(){\n        console.log(\"clicked\");\n        var el = document.getElementById(\"username\");\n        if (!(\"Notification\" in window)) {\n            \/\/ \u30d6\u30e9\u30a6\u30b6\u30fc\u304c\u901a\u77e5\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u304b\u8abf\u3079\u308b\n            alert(\"\u3053\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u306f\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u901a\u77e5\u306b\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\");\n        }else if(el.value.length == 0){\n            alert(\"\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002\");\n        } else if (Notification.permission !== \"denied\") {\n            Notification.requestPermission().then((permission) =&gt; {\n                const vapidKey = \"VAPID_PUBKEY\"; \/\/ \u9375\u30da\u30a2\u4f5c\u6210(VAPID Key)\u3067\u4f5c\u6210\u3055\u308c\u305f\u5024\n                const messaging = getMessaging();\n                try{\n                    \/\/ Add the public key generated from the console here.\n                    getToken(messaging, {vapidKey:vapidKey}).then((token) =&gt; {\n                        console.log(token);\n                        showToken(token);\n                    });\n                }catch(e){\n                    console.error(e);\n                }\n            });\n        } else {\n            alert(\"Notification permission is denied.\");\n        }\n    }\n\n    function showToken(token){\n        document.getElementById(\"box\").style.display = \"block\";\n        document.getElementById(\"result\").innerHTML = token;\n    }\n&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;form method=\"POST\" id=\"form\"&gt;\n    &lt;button type=\"button\" id=\"regist\"&gt;Push\u901a\u77e5\u767b\u9332&lt;\/button&gt;\n&lt;\/form&gt;\n&lt;br&gt;\n&lt;div id=\"box\" style=\"display:none;\"&gt;\n    &lt;div&gt;Token: &lt;\/div&gt;\n    &lt;div id=\"result\" style=\"border: solid 1px #CCCCCC; padding: 4px;\"&gt;&lt;\/div&gt;\n    &lt;div&gt;&amp;nbsp;&lt;\/div&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u3001\u30c8\u30fc\u30af\u30f3\u304c\u8868\u793a\u3055\u308c\u305f\u3089OK\u3067\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-13.png\"><img loading=\"lazy\" decoding=\"async\" width=\"316\" height=\"111\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-13.png\" alt=\"\" class=\"wp-image-8036\"\/><\/a><\/figure>\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nToken\u306f\u30b3\u30d4\u30fc\u3057\u3066\u6b21\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">\u30d6\u30e9\u30a6\u30b6\u306e\u6319\u52d5\u306b\u3064\u3044\u3066<\/h3>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-background\" style=\"background-color:#eeeeee\">\u203bFirefox\u306fToken\u53d6\u5f97\u306f\u51fa\u6765\u3066\u3082\u3001Push\u901a\u77e5\u6642\u306bTHIRD_PARTY_AUTH_ERROR\u3092\u8d77\u3053\u3059\u4e8b\u304c\u6709\u308b\u3088\u3046\u3067\u3059\u3002<br>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8A\u3067\u306f\u5168\u304f\u767a\u751f\u305b\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8B\u3067\u306f\u5fc5\u305a\u767a\u751f\u3059\u308b\u3068\u8a00\u3046\u72b6\u6cc1\u3067\u3057\u305f\u3002<br>\u3068\u3044\u3046\u304b\u3053\u306e\u8a18\u4e8b\u306e\u691c\u8a3c\u7528\u306b\u8ffd\u52a0\u3057\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u8d77\u304d\u3066\u3001\u8abf\u3079\u307e\u304f\u308a\u307e\u3057\u305f\u3002<br>\u4e00\u56de\u76ee\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u554f\u984c\u306a\u304b\u3063\u305f\u306e\u306b\u30fb\u30fb\u30fb\u3002<br><a href=\"https:\/\/stackoverflow.com\/questions\/72737181\/how-do-i-fix-the-problem-behind-third-party-auth-error-when-using-googles-api\">https:\/\/stackoverflow.com\/questions\/72737181\/how-do-i-fix-the-problem-behind-third-party-auth-error-when-using-googles-api<\/a><br><a href=\"https:\/\/stackoverflow.com\/questions\/73218243\/fcm-messages-not-being-sent-to-firefox\">https:\/\/stackoverflow.com\/questions\/73218243\/fcm-messages-not-being-sent-to-firefox<\/a><br>\u305d\u3093\u306a\u308f\u3051\u3067\u3001\u3053\u3061\u3089\u3067\u306f\u89e3\u6c7a\u51fa\u6765\u306a\u3044\u305f\u3081\u3001Chrome\u3092\u4f7f\u308f\u305b\u308b\u3057\u304b\u306a\u3044\u72b6\u6cc1\u306e\u3088\u3046\u3067\u3059\u3002<br><br>Edge\u306f\u30d6\u30e9\u30a6\u30b6\u306e\u8a2d\u5b9a\u3067\u30b5\u30a4\u30c8\u306e\u8a31\u53ef\u304c\u5fc5\u8981\u3067\u3057\u305f\u304c\u3001\u767b\u9332\u81ea\u4f53\u306f\u53ef\u80fd\u3067\u3057\u305f\u3002<br>iOS\u306f\u5236\u9650\u304c\u5f37\u304f\u3001\u7c21\u5358\u306b\u4f7f\u3046\u305f\u3081\u306b\u30d6\u30e9\u30a6\u30b6\u3092\u3001\u3068\u8a00\u3046\u8da3\u65e8\u304b\u3089\u5916\u308c\u308b\u306e\u3067\u9664\u5916\u3057\u307e\u3057\u305f\u3002<br>\u7d50\u8ad6Chrome\uff08\u304bEdge\uff09\u4f7f\u3048\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u306e\u306f\u3001\u4ed5\u65b9\u306a\u3044\u3067\u3059\u306d\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30d6\u30e9\u30a6\u30b6\uff08OS)<\/th><th class=\"has-text-align-center\" data-align=\"center\">Token\u767b\u9332<\/th><th class=\"has-text-align-center\" data-align=\"center\">Push\u901a\u77e5<\/th><\/tr><\/thead><tbody><tr><td>Firefox (Windows)<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u3007<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u25b3\uff08\u5225\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u539f\u56e0\u4e0d\u660e\u306e\u30a8\u30e9\u30fc\uff09<\/td><\/tr><tr><td>Google Chrome (Windows)<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u3007<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u3007<\/td><\/tr><tr><td>Edge (Windows)<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u25b3\uff08\u30d6\u30e9\u30a6\u30b6\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a\u304c\u5fc5\u8981\uff09<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u3007<\/td><\/tr><tr><td>Chrome(Android)<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u3007<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u3007<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Push\u901a\u77e5<\/h2>\n\n\n\n\nDocumentRoot\u76f4\u4e0b\u306b\/firebase-messaging-sw.js\u3092\u4f5c\u6210\u3057\u3001\u4ee5\u4e0b\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002\n\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Push\u901a\u77e5\u3092\u53d7\u3051\u53d6\u308b\u3068\u547c\u3070\u308c\u308b\nself.addEventListener('push', function (event) {\n    \/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3059\u308b\n    var data = {};\n    if (event.data) {\n      data = event.data.json();\n    }\n    var title = data.notification.title;\n    var message = data.notification.body;\n    event.waitUntil(\n      self.registration.showNotification(title, {\n        'body': message\n      })\n    );\n});\n<\/code><\/pre>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Bearer Token(access_token)\u306e\u7c21\u5358\u306a\u53d6\u5f97\u65b9\u6cd5<\/h3>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<a href=\"https:\/\/cloud.google.com\/sdk\/docs\/install?hl=ja\" target=\"_blank\" rel=\"noreferrer noopener\">gcloud<\/a>\u30b3\u30de\u30f3\u30c9\u3067\u51fa\u6765\u307e\u3059\u3002<br>\u3053\u306etoken\u306e\u6709\u52b9\u671f\u9593\u306f\uff08\u591a\u5206\uff09\uff11\u6642\u9593\u3068\u77ed\u3044\u306e\u3067\u3001\u6570\u5341\u5206\u5f8c\u306b\u306f\u307e\u305f\u751f\u6210\u3059\u308b\u5fc5\u8981\u304c\u6709\u308a\u307e\u3059\u3002<br>[project name]\u306fFirebase Console\u3067\u9078\u629e\u3057\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u307e\u305f\u306fID\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>gcloud auth login\n# \u30d6\u30e9\u30a6\u30b6\u304c\u958b\u304f\u306e\u3067Google\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u30ed\u30b0\u30a4\u30f3\ngcloud config set &#91;project name]\ngcloud auth print-access-token<\/code><\/pre>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">curl\u3067Push\u901a\u77e5<\/h3>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \\\n  -H \"Authorization: Bearer &#91;access_token]\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"message\": {\n      \"token\": \"&#91;browser_token]\",\n      \"notification\": {\n        \"title\": \"Push \u901a\u77e5\u306e\u30bf\u30a4\u30c8\u30eb\",\n        \"body\": \"Push \u901a\u77e5\u306e\u672c\u6587\"\n      }\n    }\n  }' \\\n  \"https:\/\/fcm.googleapis.com\/v1\/projects\/&#91;project_id]\/messages:send\"<\/code><\/pre>\n\n\n\n\n[access_token]\u3092gcloud auth print-access-token\u3067\u51fa\u529b\u3055\u308c\u305f\u5024\u306b\u3001<br>[browser_token]\u3092\u30d6\u30e9\u30a6\u30b6\u3067\u767b\u9332\u3057\u305fToken\u306b\u3001<br>[project_id]\u3092Firebase \u306eproject id\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<br>project_id\u306f\u3001Firebase Console\u3067\u3001\u8a2d\u5b9a\uff1e\u5168\u822c\u30bf\u30d6\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 ID\u306e\u5024\u3068\u306a\u308a\u307e\u3059\u3002\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-17.png\"><img loading=\"lazy\" decoding=\"async\" width=\"581\" height=\"296\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-17.png\" alt=\"\" class=\"wp-image-8058\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-17.png 581w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-17-400x204.png 400w\" sizes=\"auto, (max-width: 581px) 100vw, 581px\" \/><\/a><\/figure>\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u5b9f\u884c\u6642\u30d6\u30e9\u30a6\u30b6\u3092\u8d77\u52d5\u3057\u3066\u3044\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306a\u901a\u77e5\u304c\u6765\u307e\u3059\u3002\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-18.png\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"130\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-18.png\" alt=\"\" class=\"wp-image-8088\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-facebook nolightbox\" data-provider=\"facebook\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Facebook\" href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F7983&#038;t=Firebase%20Cloud%20Messaging%20%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B&#038;s=100&#038;p&#091;url&#093;=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F7983&#038;p&#091;images&#093;&#091;0&#093;=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-content%2Fuploads%2F2025%2F02%2Fimage-15-602x114.png&#038;p&#091;title&#093;=Firebase%20Cloud%20Messaging%20%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"Facebook\" title=\"Share on Facebook\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/facebook.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"http:\/\/twitter.com\/share?url=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F7983&#038;text=Firebase%20Cloud%20Messaging%20%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F7983&#038;title=Firebase%20Cloud%20Messaging%20%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-tumblr nolightbox\" data-provider=\"tumblr\" target=\"_blank\" rel=\"nofollow\" title=\"Share on tumblr\" href=\"https:\/\/tumblr.com\/share?s=&#038;v=3&#038;t=Firebase%20Cloud%20Messaging%20%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B&#038;u=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F7983\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"tumblr\" title=\"Share on tumblr\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/tumblr.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Firebase%20Cloud%20Messaging%20%E3%82%92%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B&#038;body=%E3%82%B7%E3%82%A7%E3%82%A2%E3%81%99%E3%82%8B%EF%BC%9A:%20https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F7983\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Android\u3084iOS\u306e\u30a2\u30d7\u30ea\u3067\u3001Push\u901a\u77e5\u3092\u3059\u308b\u306e\u306b\u3088\u304f\u4f7f\u3046Firebase Cloud Messaging\u3067\u3059\u304c\u3001\u30d6\u30e9\u30a6\u30b6\u3067\u3082\u4f7f\u3046\u4e8b\u304c\u51fa\u6765\u308b\u3089\u3057\u3044\u306e\u3067\u3001\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u3053\u3061\u3089\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306b\u3057\u3066\u3044\u307e\u3059\u3002 \u5927\u91cf\u306e\u901a\u77e5\u3092 [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[232],"tags":[],"class_list":["post-7983","post","type-post","status-publish","format-standard","hentry","category-firebase"],"_links":{"self":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts\/7983","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/comments?post=7983"}],"version-history":[{"count":93,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts\/7983\/revisions"}],"predecessor-version":[{"id":8096,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts\/7983\/revisions\/8096"}],"wp:attachment":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/media?parent=7983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/categories?post=7983"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/tags?post=7983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}