PingOne Protect SDK Implementation

by Bijoy Anupam

HTML

<button type="button" onclick="loadScript('https://apps.pingone.com/signals/web-sdk/5.2.7/signals-sdk.js')">Inject Signals SDK</button>
<button type="button" onclick="initPingOne()">Initialize Signals SDK</button>
<button type="button" onclick="generateRiskPayload()">Generate Risk Payload</button>

JavaScript

// Inject Script
function loadScript(src) {
  return new Promise(function(resolve, reject) {
    var s;
    s = document.createElement('script');
    s.src = src;
    s.onload = resolve;
    s.onerror = reject;
    document.head.appendChild(s);
  });
}

// Listen for the PingOneSignalsReadyEvent event
function onPingOneSignalsReady(callback) {
  if (window['_pingOneSignalsReady']) {
    callback();
  } else {
    document.addEventListener('PingOneSignalsReadyEvent', callback);
  }
}
// Initialize
function initPingOne() {
  onPingOneSignalsReady(function() {
    let start = performance.now();
    _pingOneSignals.init({
      // If you are using the PingFed authentication API and version 1.3 of the Integration Kit, uncomment the following line to turn off the collection of behavioral data
      // behavioralDataCollection: false
    }).then(function() {
      let timeTaken = performance.now() - start;
      console.log("PingOne Signals initialized successfully");
      console.log("Total time taken to initialize: " + timeTaken + " milliseconds");
    }).catch(function(e) {
      console.error("SDK Init failed", e);
    });
  });
}

function generateRiskPayload() {
  let start = performance.now();
  _pingOneSignals.getData()
    .then(function(result) {
      let timeTaken = performance.now() - start;
      console.log("Risk-Payload Data: " + result);
      console.log("Total time taken to generate risk-payload: " + timeTaken + " milliseconds");
    }).catch(function(e) {
      console.error('getData Error!', e);
    });
}