Skip to content

Instantly share code, notes, and snippets.

@jmertic
Last active November 14, 2017 13:22
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save jmertic/5730287 to your computer and use it in GitHub Desktop.
Save jmertic/5730287 to your computer and use it in GitHub Desktop.
Sample PHP script for connecting to the new RESTful SugarCRM REST API in 6.7 and later.
<?php
// specify the REST web service to interact with
$baseurl = '<<instanceurl>>/rest/v10';
/**
* Authenicate and get back token
*/
$curl = curl_init($baseurl . "/oauth2/token");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Set the POST arguments to pass to the Sugar server
$rawPOSTdata = array(
"grant_type" => "password",
"username" => "<<username>>",
"password" => "<<password>>",
"client_id" => "sugar",
);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($rawPOSTdata));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
// Make the REST call, returning the result
$response = curl_exec($curl);
if (!$response) {
die("Connection Failure.\n");
}
// Convert the result from JSON format to a PHP array
$result = json_decode($response);
curl_close($curl);
if ( isset($result->error) ) {
die($result->error_message."\n");
}
$token = $result->access_token;
echo "Success! OAuth token is $token\n";
/**
* Subsequent call to get my user data
*/
// Open a curl session for making the call
$curl = curl_init($baseurl . "/me");
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json',"OAuth-Token: $token"));
// Make the REST call, returning the result
$response = curl_exec($curl);
if (!$response) {
die("Connection Failure.\n");
}
// Convert the result from JSON format to a PHP array
$result = json_decode($response);
curl_close($curl);
if ( isset($result->error) ) {
die($result->error_message."\n");
}
var_dump($result);
@ginotria
Copy link

@jmetric , follow up with @itsmejustind question: Is there a different "grant_type" that can be used with "client_id" and "client_secret"? so users can have two sugar sessions, one when using the inside sugar and another from a 3rd party app using sugar api

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment