Difference between revisions of "CMU OAUTH PHP CLASS"
From CMU ITSC Network
| Line 203: | Line 203: | ||
== Examples ==  | == Examples ==  | ||
| + | callback.php  | ||
| + | <source lang="php">  | ||
| + | <?php  | ||
| + | // provide your application id,secret and redirect uri  | ||
| + | $appId = 'your cmu ouath client ID';  | ||
| + | $appSecret = 'your cmu oauth client secret';  | ||
| + | $callbackUri = 'your cmu oauth Redirect URI';  | ||
| + | |||
| + | require('cmu.oauth.class.php');  | ||
| + | // new CMU Oauth Instance.  | ||
| + | $cmuOauth = new cmuOauth();  | ||
| + | // set your application id,secret and redirect uri  | ||
| + | $cmuOauth->setAppId($appId);  | ||
| + | $cmuOauth->setAppSecret($appSecret);  | ||
| + | $cmuOauth->setCallbackUri($callbackUri);  | ||
| + | |||
| + | if(isset($_GET['code']){  | ||
| + | 	// code parse from CMU Oauth to your redirect uri.  | ||
| + | 	$code = $_GET['code'];  | ||
| + | 	// get access token from code.  | ||
| + | 	$accessToken = $cmuOauth->getAccessToken($code);  | ||
| + | 	// get user information from access token.  | ||
| + | 	$userInfo = $cmuOauth->getUserInfo($accessToken->access_token);  | ||
| + | |||
| + | |||
| + | 	// do login process   | ||
| + | 	// create session if status == true, refer to return values of cmuOauth::getUserInfo  | ||
| + | 	// else destroy session  | ||
| + | 	if($userInfo->status===true){  | ||
| + | 	  session_start();  | ||
| + | 	  $sid = session_id();  | ||
| + | 	  $_SESSION["user_$sid"]=$userInfo->data->itaccount_name."@cmu.ac.th";	    | ||
| + | 	  header("location: https://example.com/main.html");  | ||
| + | 	  exit();  | ||
| + | 	}else {  | ||
| + | 	  session_start();  | ||
| + | 	  unset($_SESSION["user_$sid"]);	    | ||
| + | 	  session_destroy();  | ||
| + | 	  header("location: https://example.com/403.html");  | ||
| + | 	  exit();  | ||
| + | 	}  | ||
| + | }else{  | ||
| + | 	// initial redirect to CMU Oauth login page.  | ||
| + | 	$cmuOauth->initOauth();  | ||
| + | }  | ||
| + | ?>  | ||
| + | </source>  | ||
| + | |||
== Download ==  | == Download ==  | ||
[http://network.cmu.ac.th/cmu.oauth.class.php.zip cmu.oauth.class.php.zip]  | [http://network.cmu.ac.th/cmu.oauth.class.php.zip cmu.oauth.class.php.zip]  | ||
Revision as of 11:57, 24 September 2017
Method
Constructor
Set Client ID, Client Secret, Redirect URI
| __construct([string $appId, string $clientSecret, string $redirectURI]) | 
| name | description | 
| appId | cmu oauth Client ID | 
| clientSecret | cmu oauth Client Secret | 
| redirectURI | cmu oauth Redirect URI | 
| no return value | 
setAppId
set Client ID
| setAppId(string $appid) | 
| name | description | 
| appid | cmu oauth Client ID | 
| no return value | 
setAppSecret
Set Client Secret
| setAppSecret(string $appSecret) | 
| name | description | 
| appSecret | cmu oauth Client Secret | 
| no return value | 
setCallbackUri
Set Redirect URI
| setCallbackUri(string $uri) | 
| name | description | 
| uri | Application Callback / Redirect URI | 
| no return value | 
initOauth
Initial redirect to CMU Oauth for authorization.
| initOauth() | 
| no parameter | 
| no return value | 
getAccessToken
Get user's authorized access token.
| object getAccessToken(string $code) | 
| name | description | 
| code | code that parse by CMU Oauth to redirect URI. | 
| object | 
{
  "access_token": "66822448858031556636", 
  "expires_in": 3600, 
  "refresh_token": "23178027621214615262"
}
 | 
getUserInfo
Get user's information by user's authorized access token.
| object getUserInfo(string $accessToken) | 
| name | description | 
| accessToken | user's authorized access token | 
| object | 
{
  "status": true,
  "data": {
    "timestamp": "2017-03-31T17:30:55.7933253+07:00",
    "itaccount_name": "jon_s",
    "citizen_id": "1111111111111",
    "student_id": "520510999",
    "prefix": {
      "en_US": "Mr.",
      "th_TH": "นาย"
    },
    "first_name": {
      "en_US": "JON",
      "th_TH": "จอน"
    },
    "last_name": {
      "en_US": "SNOW",
      "th_TH": "สโนว์"
    },
    "organization": {
      "code": "05",
      "name": {
        "en_US": "Faculty of Science",
        "th_TH": "คณะวิทยาศาสตร์"
      }
    },
    "itaccount_type": {
      "id": "AlumAcc",
      "en_US": "Alumni Account",
      "th_TH": "นักศึกษาเก่า"
    }
  }
}
 | 
Examples
callback.php
<?php
// provide your application id,secret and redirect uri
$appId = 'your cmu ouath client ID';
$appSecret = 'your cmu oauth client secret';
$callbackUri = 'your cmu oauth Redirect URI';
require('cmu.oauth.class.php');
// new CMU Oauth Instance.
$cmuOauth = new cmuOauth();
// set your application id,secret and redirect uri
$cmuOauth->setAppId($appId);
$cmuOauth->setAppSecret($appSecret);
$cmuOauth->setCallbackUri($callbackUri);
if(isset($_GET['code']){
	// code parse from CMU Oauth to your redirect uri.
	$code = $_GET['code'];
	// get access token from code.
	$accessToken = $cmuOauth->getAccessToken($code);
	// get user information from access token.
	$userInfo = $cmuOauth->getUserInfo($accessToken->access_token);
	
	// do login process 
	// create session if status == true, refer to return values of cmuOauth::getUserInfo
	// else destroy session
	if($userInfo->status===true){
	  session_start();
	  $sid = session_id();
	  $_SESSION["user_$sid"]=$userInfo->data->itaccount_name."@cmu.ac.th";	  
	  header("location: https://example.com/main.html");
	  exit();
	}else {
	  session_start();
	  unset($_SESSION["user_$sid"]);	  
	  session_destroy();
	  header("location: https://example.com/403.html");
	  exit();
	}
}else{
	// initial redirect to CMU Oauth login page.
	$cmuOauth->initOauth();
}
?>