Developer API Examples

From Active911 Documentation Wiki
Jump to: navigation, search

Examples for the Active911 Developer API

PHP

Authorization Code Redirect

 //We redirect the user to the Authorization Server to authorize access
 $authorization_url = 'https://access.active911.com/interface/open_api/authorize_agency.php';	

 //Set the GET parameters and then redirect the user to the authorization url
 $query_array = array(
  'client_id'       => '<Your client_id>',
  'response_type'   => 'code',
  'redirection_uri' => '<Your redirection_uri>',
  'scope'           => '<Scope you want to access>'
 );
 header('Location: ' . $authorization_url . '?' . http_build_query($query_array));

Authorization Code Exchange for Access Token and Refresh Token

//We have been redirected back here after being authorized by the Authorization Server
//Now we need to exchange our authorization code for an access token and refresh token
$token_url = 'https://access.active911.com/interface/open_api/token.php';

//Note that we send the secret to authenticate our request.  We did not send the secret to generate an authorization code because then the user would be able to see it.
//We must send the secret from a server or protected native app, where it cannot be grabbed by the user.
$post_array = array(
 'client_id'   => '<Your client_id>',
 'client_secret'  => '<Your client_secret>',
 'grant_type'  => 'authorization_code',
 'scope'    => '<Scope you want to access>',
 'code'    => $_GET['code']
);

//Now we have the authorization code.  We send a request to the token endpoint
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $token_url); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_array)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_VERBOSE, true);
$output = curl_exec($ch);
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
$json = json_decode($output);

//Check if we got a OK response
if($response_code != 200){
 //There was an error.  Show to the user if JSON error was sent
 if(empty($json->error_description)){
  die("Error: Could not generate token");
 }
 else{
  die("Error: " . $json->error_description);
 }
}
$access_token = $json->access_token;
$refresh_token = $json->refresh_token;
$expiration = time() + $json->expires_in;

Use Refresh Token to get a new Access Token

 //Our access token expired.  Request a new one using the refresh token.
 $token_url = 'https://access.active911.com/interface/open_api/token.php';

 //Note that we send the secret again to authenticate our request.
 $post_array = array(
  'client_id'   => '<Your client_id>',
  'client_secret'  => '<Your client_secret>',
  'grant_type'  => 'refresh_token',
  'scope'    => '<Scope you want to access>',
  'refresh_token'  => '<Your previously generated refresh token>'
 );
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $token_url); 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_array)); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_VERBOSE, true);
 $output = curl_exec($ch);
 $response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 curl_close ($ch);
 $json = json_decode($output);
 
 //Check if we got a OK response
 if($response_code != 200){
  //There was an error.  Show to the user if JSON error was sent
  if(empty($json->error_description)){
   die("Error: Could not generate token");
  }
  else{
   die("Error: " . $json->error_description);
  }
 }
 
 //Set the access token and expiration in the cookies
 $access_token = $json->access_token;
 $expiration = time() + $json->expires_in;

JavaScript

jQuery AJAX to the API using previously generated access_token

var access_token = "<Your Access Token>";
var base_api_uri = 'https://access.active911.com/interface/open_api/api/';
$.ajax({
 type: "GET",
 url: base_api_uri,
 beforeSend: function (xhr) {
  xhr.setRequestHeader('Authorization', "Bearer " + access_token);
 },
 success: function (response) {
  if(response.result=='success'){
   //We successfully fetched the agency's information
   var name = response.message.agency.name;
   var latitude = response.message.agency.latitude;
   var longitude = response.message.agency.longitude;
   //Store the uri's for all of this agency's devices
   $( response.message.agency.devices ).each(function(i, device){
    devices[device.id] = {uri: device.uri};
   });
    
   
  }
  else{
   alert('Could not connect to the API');
  }
 },
 dataType: 'json'
});

Java

Authorization Code Redirect w/JavaFX

//We use JavaFX to show the user the Active911 website so that they can authorize the request
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class TestWebView extends Application {

 private String auth_code;

 public static void main(String[] args) {
   Application.launch(args);
 }

 @Override
 public void start(final Stage primaryStage) throws Exception {
   primaryStage.setTitle("Active911 Connect");

   //Lets compose the url
   //We send the user to the Authorization Server to authorize access
    String authorization_url = "https://access.active911.com/interface/open_api/authorize_agency.php";  
    final String redirection_uri = "<Your Redirection URI>";
    String client_id = "<Your client id>";
    String scope = "<The scope you want to request access to>";

    //Set the GET parameters and then send the user to the authorization url
    authorization_url +=
     "?client_id=" + client_id
     "&response_type=code" +
     "&redirection_uri=" + URLEncoder.encode(redirection_uri, "UTF-8") + 
     "&scope=" + scope;

   //Show the user a browser window with the authorization endpoint
   WebView  browser = new WebView();
   WebEngine engine = browser.getEngine();
   engine.load(authorization_url);
   StackPane sp = new StackPane();
   sp.getChildren().add(browser);
   Scene root = new Scene(sp);
   primaryStage.setScene(root);
   primaryStage.show();

   //Intercept any location that includes the authorization code
   engine.locationProperty().addListener(new ChangeListener<String>() {
     @Override public void changed(ObservableValue<? extends String> ov, final String oldLoc, final String loc) {
       System.out.println("Saw location changed to " + loc);

       //We have been redirected with our authorization code
       if (loc.contains("code=")) {
         try {
           URL url = new URL(loc);
           String[] params = url.getQuery().split("&");
           Map<String, String> map = new HashMap<String, String>();
           for (String param : params) {
             String name = param.split("=")[0];
             String value = param.split("=")[1];
             map.put(name, value);
           }
           System.out.println("The code is: "+map.get("code"));
           auth_code = map.get("code");
         } catch (MalformedURLException e) {
           e.printStackTrace();
         }
       }
     }
     });
 }
}

GET request to the API using previously generated access_token using the Apache HttpComponents_Client

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("https://access.active911.com/interface/open_api/api/");
httpget.setHeader("Authorization", "Bearer " + accessToken);

HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();