| @@ -0,0 +1,13 @@ | |||
| { | |||
| "type": "service_account", | |||
| "project_id": "hris-a1c6c", | |||
| "private_key_id": "dc2149cc4504c661bdcbd8d9e64a0f30a8ae141b", | |||
| "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC1PBVqOyy6Hcva\njCYFJdTVGU6ERnsZaycnC28f/toiN4GJwCU+ZO7orXQwgwDHUHCz3j75IU2G5xy4\n/M3+3mM3Q7czj+3YB5n1YnenrUn1zNtovekXXV1kNViGd8uyfqPPUtwLLzzlg36C\n20bBLml2Oa0QR/s14M4bwEKclewsPcguJG+jVMtk43MnMSfkV0M+pjY44IHv40KW\no8H991864mlSxVrXZzOt7jTMw4nQNXUA2X2wq4lwvSnyg3bpsxwr7UBvLIyFZEqt\n74F+/BsEcCuOqKBCS4i0KVm7zJRomY/R4kwAbFA2PtKPMxMQv7yRIWxJOgyEtsuI\nSG0+e7vvAgMBAAECggEAV7X/8T05TMvd3GPmhKhGBGouf0LzEZ6zwKg+fEAlhtjR\nJv8opzVHELHdoRrNtiiemtZtKLou4KKaWobzFS3A2764e8plBB/NqZ4hpbNur3iZ\nGWyL0iR77eMJeG6i1TyH/+8skncmpDdK8363FAhnvvFz6gTENdOaPIEEW+8M8W2V\ngbwKhXiiUa4Yj65ucGxPBUKrgvsNO6/OCxaglrsMf3AS9o0GPRko9g7bs19TLnoG\nT6gdvQxg+zi26JM0TsNnkXX32IsN+r1JOx+8weCH+FgPCvFja3lcgPFB+Z3Wc4X3\nDNBTIKoUkHlmptARGzXPTWIM5W7JGRN59oicKXcTCQKBgQDvIVeMx6xMWKcdx95N\na2yhPOcl58Q6N+OQXj4E1J+fSiYSasxLDdmuL2madO4c2ajAR7EuPaz6waNW2/XS\nXXM2Lsyeg46UIoDE+RNNQQQ7aCSOu51WfmADsBlRxQWc4qaNH3l/sPsiBh816W2v\ncUnEbLYmbvxThvg1+GiWUDtq9wKBgQDCBSgOlobSFyQAMK0HTR6yaT0LtgI6e+dr\nhmmsFoDb3fUUyRFzXpTOJ2cA5xUEw8mwpVS9SiDvxr1wn+F3vIvYocbXY2hKzbOb\nhyDyqYYBZdaf7YKihZ+wujJJQu1OByy8TRyy4L04ziad4n9V2eGYaFX2ZjL/7TCR\n+GBYLuFAyQKBgQCeYucqR9bHerC1+Pw1K0H4Se6QHMLMDNidds59RJe1Wdd9u181\nFydnR+Aaffh5A3HSaanhhthb/oXBsk9P1rXI3ZaKJ3j4hSHlVVSDhtzWvFP6dinw\ncCQITUt37ZeaIkVOk9pVyVONZaCmhMYxvket4pODQV+/s1YT6UTcyqeQYQKBgQCv\nhSqvx80/0l9nLKHbsRDMJhhrt8RcVCsPQxHl9JWuUiWdICkBTdcgiNTOJD8HiHe1\nrlvywlT5lblbYcf/IjsBR5ky0WNQCLcrRBuya1oneZGoLJ25mVjV8Bv92uYDaMo3\nryr/SADmmtikjHrVl75WukzKE7qffFwsMZ43KHHuwQKBgQCEQO0++OURsJjiTsdt\nEclY4+4sJmjf1wV0w80Qxh6CUEZvO1vo71y4oWqVAY5vDyasSKCyC8O4hmDeeTni\n+O0eQl8S8fOCZTOLGIx6I+BnlsJuXtj4j2x3z4zQm70wU/LcONXAVxdRiXPWECAK\nPh6dTxJTT8TeXcCM+hswW4ZVNg==\n-----END PRIVATE KEY-----\n", | |||
| "client_email": "firebase-adminsdk-9i92r@hris-a1c6c.iam.gserviceaccount.com", | |||
| "client_id": "103796818750526974337", | |||
| "auth_uri": "https://accounts.google.com/o/oauth2/auth", | |||
| "token_uri": "https://oauth2.googleapis.com/token", | |||
| "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", | |||
| "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-9i92r%40hris-a1c6c.iam.gserviceaccount.com" | |||
| } | |||
| @@ -0,0 +1,12 @@ | |||
| { | |||
| "type": "service_account", | |||
| "project_id": "hris-a1c6c", | |||
| "private_key_id": "dc2149cc4504c661bdcbd8d9e64a0f30a8ae141b", | |||
| "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC1PBVqOyy6Hcva\njCYFJdTVGU6ERnsZaycnC28f/toiN4GJwCU+ZO7orXQwgwDHUHCz3j75IU2G5xy4\n/M3+3mM3Q7czj+3YB5n1YnenrUn1zNtovekXXV1kNViGd8uyfqPPUtwLLzzlg36C\n20bBLml2Oa0QR/s14M4bwEKclewsPcguJG+jVMtk43MnMSfkV0M+pjY44IHv40KW\no8H991864mlSxVrXZzOt7jTMw4nQNXUA2X2wq4lwvSnyg3bpsxwr7UBvLIyFZEqt\n74F+/BsEcCuOqKBCS4i0KVm7zJRomY/R4kwAbFA2PtKPMxMQv7yRIWxJOgyEtsuI\nSG0+e7vvAgMBAAECggEAV7X/8T05TMvd3GPmhKhGBGouf0LzEZ6zwKg+fEAlhtjR\nJv8opzVHELHdoRrNtiiemtZtKLou4KKaWobzFS3A2764e8plBB/NqZ4hpbNur3iZ\nGWyL0iR77eMJeG6i1TyH/+8skncmpDdK8363FAhnvvFz6gTENdOaPIEEW+8M8W2V\ngbwKhXiiUa4Yj65ucGxPBUKrgvsNO6/OCxaglrsMf3AS9o0GPRko9g7bs19TLnoG\nT6gdvQxg+zi26JM0TsNnkXX32IsN+r1JOx+8weCH+FgPCvFja3lcgPFB+Z3Wc4X3\nDNBTIKoUkHlmptARGzXPTWIM5W7JGRN59oicKXcTCQKBgQDvIVeMx6xMWKcdx95N\na2yhPOcl58Q6N+OQXj4E1J+fSiYSasxLDdmuL2madO4c2ajAR7EuPaz6waNW2/XS\nXXM2Lsyeg46UIoDE+RNNQQQ7aCSOu51WfmADsBlRxQWc4qaNH3l/sPsiBh816W2v\ncUnEbLYmbvxThvg1+GiWUDtq9wKBgQDCBSgOlobSFyQAMK0HTR6yaT0LtgI6e+dr\nhmmsFoDb3fUUyRFzXpTOJ2cA5xUEw8mwpVS9SiDvxr1wn+F3vIvYocbXY2hKzbOb\nhyDyqYYBZdaf7YKihZ+wujJJQu1OByy8TRyy4L04ziad4n9V2eGYaFX2ZjL/7TCR\n+GBYLuFAyQKBgQCeYucqR9bHerC1+Pw1K0H4Se6QHMLMDNidds59RJe1Wdd9u181\nFydnR+Aaffh5A3HSaanhhthb/oXBsk9P1rXI3ZaKJ3j4hSHlVVSDhtzWvFP6dinw\ncCQITUt37ZeaIkVOk9pVyVONZaCmhMYxvket4pODQV+/s1YT6UTcyqeQYQKBgQCv\nhSqvx80/0l9nLKHbsRDMJhhrt8RcVCsPQxHl9JWuUiWdICkBTdcgiNTOJD8HiHe1\nrlvywlT5lblbYcf/IjsBR5ky0WNQCLcrRBuya1oneZGoLJ25mVjV8Bv92uYDaMo3\nryr/SADmmtikjHrVl75WukzKE7qffFwsMZ43KHHuwQKBgQCEQO0++OURsJjiTsdt\nEclY4+4sJmjf1wV0w80Qxh6CUEZvO1vo71y4oWqVAY5vDyasSKCyC8O4hmDeeTni\n+O0eQl8S8fOCZTOLGIx6I+BnlsJuXtj4j2x3z4zQm70wU/LcONXAVxdRiXPWECAK\nPh6dTxJTT8TeXcCM+hswW4ZVNg==\n-----END PRIVATE KEY-----\n", | |||
| "client_email": "firebase-adminsdk-9i92r@hris-a1c6c.iam.gserviceaccount.com", | |||
| "client_id": "103796818750526974337", | |||
| "auth_uri": "https://accounts.google.com/o/oauth2/auth", | |||
| "token_uri": "https://oauth2.googleapis.com/token", | |||
| "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", | |||
| "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-9i92r%40hris-a1c6c.iam.gserviceaccount.com" | |||
| } | |||
| @@ -0,0 +1,127 @@ | |||
| const express = require('express'); | |||
| const path = require('path'); | |||
| const {google} = require('googleapis'); | |||
| var admin = require("firebase-admin"); | |||
| var SCOPES = 'https://www.googleapis.com/auth/firebase.messaging'; | |||
| const port = 3333; | |||
| var dirPath = path.join(__dirname , 'fcm_key'); | |||
| var keyPath = require('./keypath.json'); | |||
| for(key in keyPath){ | |||
| var data = keyPath[key]; | |||
| var jsonPath = path.join(dirPath , data.PATH); | |||
| var adminAuthToken = require(jsonPath); | |||
| admin.initializeApp({ | |||
| credential: admin.credential.cert(adminAuthToken), | |||
| databaseURL: data.DB_URL | |||
| },key); | |||
| } | |||
| const app = express(); | |||
| app.use(express.json({limit: '50mb'})); | |||
| app.use(express.urlencoded({limit: '50mb' ,parameterLimit: 1000000 , extended : true})); | |||
| app.post('/sendFcm',async function(req,res){ | |||
| var dataReq = req.body; | |||
| var application = dataReq.application; | |||
| var fcm = admin.app(application); | |||
| var tokens = ["ckATQ13PdBc:APA91bF_RbWjE8gFcWoWqyRwLuh7GtDyQnx-l3DCVWyfEyWCXBgMWeK6Cca4FW2Wjltgwd5Sck7kI-0L9vR0i1MwRMbqu1--2AaMFaU9G6cwbkt0DCGI8nJ-JpMmShjA1kMHDMa-8BUI", | |||
| "e3S17M3ZMjU:APA91bEEb2otaSUV7Vu0hRxVCiCawxHXnc1E_PV1nxvSJOSxAL90SYGIOy_zbrsBJP-ewD0OgRQ44rfFDHF_ROQj3GKH8T5DfhUHeb4xPeVWc16kyF_NRyUvx3G_RDqgX4RYMKjfg6gs"] | |||
| var message = { | |||
| tokens : tokens, | |||
| notification :{ | |||
| title: 'MAKANM KANA', | |||
| body: 'EVERIBADINUW.' | |||
| }, | |||
| data : { | |||
| "click_action":"FLUTTER_NOTIFICATION_CLICK", | |||
| "message_id":"1", | |||
| "route":"/Pilihan", | |||
| "type":"NOTIFICATION" | |||
| } | |||
| } | |||
| fcm.messaging().sendMulticast(message) | |||
| .then((response) => { | |||
| console.log(response); | |||
| if (response.failureCount > 0) { | |||
| const failedTokens = []; | |||
| response.responses.forEach((resp, idx) => { | |||
| console.log('AAAA'); | |||
| if (!resp.success) { | |||
| failedTokens.push(registrationTokens[idx]); | |||
| } | |||
| }); | |||
| console.log('List of tokens that caused failures: ' + failedTokens); | |||
| } | |||
| return res.status(200).json({"STATUS" : "SUKSES" ,"DATA" : response}); | |||
| }).catch((error) => { | |||
| console.log('ERROR'); | |||
| return res.status(404).json({"STATUS" : "ERROR" ,"DATA" : error}); | |||
| }); | |||
| // var token = dataReq["to"]; | |||
| // if(token.length > 0){ | |||
| // // One Device | |||
| // if(typeof token == 'string'){ | |||
| // var message = { | |||
| // token : token, | |||
| // notification : dataReq.notification, | |||
| // data : dataReq.data | |||
| // } | |||
| // fcm.messaging().send(message) | |||
| // .then((response) => { | |||
| // // Response is a message ID string. | |||
| // return res.status(200).json({"STATUS" : "SUKSES" , "DATA" : response}); | |||
| // }) | |||
| // .catch((error) => { | |||
| // return res.status(404).json({"STATUS" : "ERROR" ,"DATA" : error}); | |||
| // }); | |||
| // } | |||
| // // Multi Devices | |||
| // else{ | |||
| // console.log(token); | |||
| // var tokens = ["e3S17M3ZMjU:APA91bEEb2otaSUV7Vu0hRxVCiCawxHXnc1E_PV1nxvSJOSxAL90SYGIOy_zbrsBJP-ewD0OgRQ44rfFDHF_ROQj3GKH8T5DfhUHeb4xPeVWc16kyF_NRyUvx3G_RDqgX4RYMKjfg6gs", | |||
| // "dN1qcm6jr9M:APA91bFuXr5tx0tVqKYqGxWDjaNm8NrbzO2hFpK6ylQHxQzZMnTjN4GtT3MNOXRkU-Mj98A9xMmJy715IQJX_aQb_7PqmzNchegeDOTJn86zcnTMlkqU6IKJaFkU2CRsZU_bsHXDeDoX"] | |||
| // var message = { | |||
| // tokens : tokens, | |||
| // notification : data.notification, | |||
| // data : dataReq.data | |||
| // } | |||
| // fcm.messaging().sendMulticast(message) | |||
| // .then((response) => { | |||
| // console.log(response); | |||
| // if (response.failureCount > 0) { | |||
| // const failedTokens = []; | |||
| // response.responses.forEach((resp, idx) => { | |||
| // console.log('AAAA'); | |||
| // if (!resp.success) { | |||
| // failedTokens.push(registrationTokens[idx]); | |||
| // } | |||
| // }); | |||
| // console.log('List of tokens that caused failures: ' + failedTokens); | |||
| // } | |||
| // return res.status(200).json({"STATUS" : "SUKSES" ,"DATA" : response}); | |||
| // }).catch((error) => { | |||
| // console.log('ERROR'); | |||
| // return res.status(404).json({"STATUS" : "ERROR" ,"DATA" : error}); | |||
| // }); | |||
| // } | |||
| // } | |||
| }); | |||
| app.listen(port,()=> console.log(`Listening into port ${port}`)); | |||
| @@ -0,0 +1,10 @@ | |||
| { | |||
| "HRIS" : { | |||
| "PATH" : "hris-firebase-service.json", | |||
| "DB_URL" : "https://hris-a1c6c.firebaseio.com" | |||
| }, | |||
| "TBS" : { | |||
| "PATH" : "TBS.json", | |||
| "DB_URL" : "AYEYAYEE" | |||
| } | |||
| } | |||
| @@ -0,0 +1,16 @@ | |||
| { | |||
| "name": "fcm-node-helper", | |||
| "version": "1.0.0", | |||
| "description": "", | |||
| "main": "index.js", | |||
| "scripts": { | |||
| "test": "echo \"Error: no test specified\" && exit 1" | |||
| }, | |||
| "author": "", | |||
| "license": "ISC", | |||
| "dependencies": { | |||
| "express": "^4.17.1", | |||
| "firebase-admin": "^9.0.0", | |||
| "googleapis": "^59.0.0" | |||
| } | |||
| } | |||