Thursday, February 1, 2018

Exchanging credentials for bearer token

Lufthansa API gives bearer token with expiration time. So you need to exchange client secret, client id and grant type for bearer token. Here's the PHP script. Don't forget to place you credentials.


<?php
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,"https://api.lufthansa.com/v1/oauth/token/");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, 'client_id=****&client_secret=****&grant_type=client_credentials');
 $headers = [
        'Content-Type: application/x-www-form-urlencoded'
 ];
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 $data = curl_exec($ch);
 curl_close($ch);

 // Handle response data
 $response = json_decode($data);
 // get bearer token
 $tok = $response->access_token;
 
 $ch = curl_init();
 // end-point
 curl_setopt($ch, CURLOPT_URL,"https://api.lufthansa.com/v1/references/countries/DK?limit=20&offset=0");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $headers = [
     'Accept: application/json',
     'Authorization: Bearer '.$tok,
     'X-Originating-Ip: '.$_SERVER['SERVER_ADDR']
 ];
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 $server_output = curl_exec ($ch);
 curl_close ($ch);
 $response = json_decode($server_output,true);
 echo"<pre>"; 
 var_dump($response);

PHP script for Yelp API v3


Yelp provides bearer token with no expiration date when you register your app. Place it in third line.

<?php
 // place your bearer token from Yelp API
 $token = '';
 if($token == "") die ("place your credentials");
 $unsigned_url = "https://api.yelp.com/v3/businesses/search?term=hotel&location=sf&limit=20";
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $unsigned_url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $headers = [
     'Authorization: Bearer ' . $token
 ];
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 $data = curl_exec($ch); // Yelp response
 curl_close($ch);

 // Handle Yelp response data
 $response = json_decode($data);

 // maximal number of API calls reached?
 if(isset($response->error->id) && $response->error->id = "EXCEEDED_REQS") die ("You have reached maximum API calls");
 
 // handle no search results
 if($response->businesses[0]->name == NULL) die ('<h1>No search results match your query.</h1>');

 // dump name, url, location, address, latitude and longitude
 echo"<p>name, url, location, address, latitude and longitude</p>";
 echo"<pre>";
 var_dump(
  $response->businesses[0]->name,
  $response->businesses[0]->url,
  $response->businesses[0]->location->display_address[0],
  $response->businesses[0]->location->display_address[1],
  $response->businesses[0]->coordinates->latitude,
  $response->businesses[0]->coordinates->longitude
 );
?>