forked from bobeast/PushPlugin-deprecated
-
Notifications
You must be signed in to change notification settings - Fork 993
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated README file. Updated index.html.
New nodeJS based server script to test amazon ADM push notification services.
- Loading branch information
Archana Naik
committed
May 13, 2014
1 parent
ecb94e6
commit 7814be0
Showing
5 changed files
with
473 additions
and
710 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
|
||
|
||
|
||
// Client ID and Client Secret received from ADM | ||
// For more info, see: https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/02-obtaining-adm-credentials | ||
var CLIENT_ID = "amzn1.application-oa2-client.8e838f6629554e26ae3f43a6c663cd60"; | ||
var CLIENT_SECRET = "0af96083320f5d70dc4f358cc783ac65a22e78b297ba257df34d5f723f24543f"; | ||
|
||
// Registration ID, received on device after it registers with ADM server | ||
var REGISTRATION_IDS = ["amzn1.adm-registration.v2.Y29tLmFtYXpvbi5EZXZpY2VNZXNzYWdpbmcuUmVnaXN0cmF0aW9uSWRFbmNyeXB0aW9uS2V5ITEhOE9rZ2h5TXlhVEFFczg2ejNWL3JMcmhTa255Uk5BclhBbE1XMFZzcnU1aFF6cTlvdU5FbVEwclZmdk5oTFBVRXVDN1luQlRSNnRVRUViREdQSlBvSzRNaXVRRUlyUy9NYWZCYS9VWTJUaGZwb3ZVTHhlRTM0MGhvampBK01hVktsMEhxakdmQStOSXRjUXBTQUhNU1NlVVVUVkFreVRhRTBCYktaQ2ZkUFdqSmIwcHgzRDhMQnllVXdxQ2EwdHNXRmFVNklYL0U4UXovcHg0K3Jjb25VbVFLRUVVOFVabnh4RDhjYmtIcHd1ZThiekorbGtzR2taMG95cC92Y3NtZytrcTRPNjhXUUpiZEk3QzFvQThBRTFWWXM2NHkyMjdYVGV5RlhhMWNHS0k9IW5GNEJMSXNleC9xbWpHSU52NnczY0E9PQ"]; | ||
|
||
// Message payload to be sent to client | ||
var payload = { | ||
data: { | ||
message: "PushPlugin works!!", | ||
sound: "beep.wav", | ||
url: "http://www.amazon.com", | ||
timeStamp: new Date().toISOString(), | ||
foo: "baz" | ||
}, | ||
consolidationKey: "my app", | ||
expiresAfter: 3600 | ||
}; | ||
|
||
|
||
//********************************* | ||
|
||
|
||
var https = require("https"); | ||
var querystring = require("querystring"); | ||
|
||
|
||
if(CLIENT_ID == "" || CLIENT_SECRET == "" || REGISTRATION_IDS.length == 0){ | ||
console.log("******************\nSetup Error: \nYou need to edit the pushADM.js file and enter your ADM credentials and device registration ID(s).\n******************"); | ||
process.exit(1); | ||
} | ||
|
||
|
||
// Get access token from server, and use it to post message to device | ||
getAccessToken(function(accessToken){ | ||
|
||
for(var i = 0; i < REGISTRATION_IDS.length; i++){ | ||
|
||
var registrationID = REGISTRATION_IDS[i]; | ||
|
||
postMessage(accessToken, registrationID, payload); | ||
} | ||
|
||
}); | ||
|
||
|
||
|
||
|
||
// Query OAuth server for access token | ||
// For more info, see: https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/05-requesting-an-access-token | ||
|
||
function getAccessToken(callback){ | ||
|
||
console.log("Requesting access token from server..."); | ||
|
||
var credentials = { | ||
scope: "messaging:push", | ||
grant_type: "client_credentials", | ||
client_id: CLIENT_ID, | ||
client_secret: CLIENT_SECRET | ||
} | ||
|
||
var post_data = querystring.stringify(credentials); | ||
|
||
var post_options = { | ||
host: "api.amazon.com", | ||
port: "443", | ||
path: "/auth/O2/token", | ||
method: "POST", | ||
headers: { | ||
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" | ||
} | ||
}; | ||
|
||
var req = https.request(post_options, function(res) { | ||
|
||
var data = ""; | ||
|
||
res.on("data", function (chunk) { | ||
data += chunk; | ||
}); | ||
|
||
res.on("end", function() { | ||
console.log("\nAccess token response:", data); | ||
var accessToken = JSON.parse(data).access_token; | ||
callback(accessToken); | ||
}); | ||
|
||
}); | ||
|
||
req.on("error", function(e) { | ||
console.log("\nProblem with access token request: ", e.message); | ||
}); | ||
|
||
req.write(post_data); | ||
req.end(); | ||
|
||
} | ||
|
||
|
||
// Post message payload to ADM server | ||
// For more info, see: https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/06-sending-a-message | ||
|
||
function postMessage(accessToken, registrationID, payload){ | ||
|
||
if(accessToken == undefined || registrationID == undefined || payload == undefined){ | ||
return; | ||
} | ||
|
||
console.log("\nSending message..."); | ||
|
||
var post_data = JSON.stringify(payload); | ||
|
||
var api_path = "/messaging/registrations/" + registrationID + "/messages"; | ||
|
||
var post_options = { | ||
host: "api.amazon.com", | ||
port: "443", | ||
path: api_path, | ||
method: "POST", | ||
headers: { | ||
"Authorization": "Bearer " + accessToken, | ||
"X-Amzn-Type-Version": "com.amazon.device.messaging.ADMMessage@1.0", | ||
"X-Amzn-Accept-Type" : "com.amazon.device.messaging.ADMSendResult@1.0", | ||
"Content-Type": "application/json", | ||
"Accept": "application/json", | ||
} | ||
}; | ||
|
||
var req = https.request(post_options, function(res) { | ||
|
||
var data = ""; | ||
|
||
res.on("data", function (chunk) { | ||
data += chunk; | ||
}); | ||
|
||
res.on("end", function() { | ||
console.log("\nSend message response: ", data); | ||
}); | ||
|
||
}); | ||
|
||
req.on("error", function(e) { | ||
console.log("\nProblem with send message request: ", e.message); | ||
}); | ||
|
||
req.write(post_data); | ||
req.end(); | ||
|
||
} | ||
|
||
|
Oops, something went wrong.