The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Introduction
Authorization Code Flow
from CMU OAuth
Requirement
php_curl
Methods
Constructor
Set Client ID, Client Secret, Redirect URI
Description
__construct([string $appId, string $clientSecret, string $redirectURI])
|
Parameters
name |
description
|
appId
|
cmu oauth Client ID
|
clientSecret
|
cmu oauth Client Secret
|
redirectURI
|
cmu oauth Redirect URI
|
Return Values
no return value
|
setAppId
set Client ID
Description
setAppId(string $appid)
|
Parameters
name |
description
|
appid
|
cmu oauth Client ID
|
Return Values
no return value
|
setAppSecret
Set Client Secret
Description
setAppSecret(string $appSecret)
|
Parameters
name |
description
|
appSecret
|
cmu oauth Client Secret
|
Return Values
no return value
|
setCallbackUri
Set Redirect URI
Description
setCallbackUri(string $uri)
|
Parameters
name |
description
|
uri
|
Application Callback / Redirect URI
|
Return Values
no return value
|
setScope
Set scope
Description
setScope(string $scope)
|
Parameters
name |
description
|
scope
|
access token scope name comma separate value
|
Return Values
no return value
|
setState
Set state
Return Values
String
|
Random String
|
initOauth
Initial redirect to CMU Oauth for authorization.
Return Values
no return value
|
getAccessTokenAuthCode
Get user's authorized access token for authorization code flow.
Description
object getAccessTokenAuthCode(string $code)
|
Parameters
name |
description
|
code
|
code that parse by CMU Oauth to redirect URI.
|
Return Values
object
|
{
"access_token": "66822448858031556636",
"expires_in": 3600,
"refresh_token": "23178027621214615262"
}
|
getAccessTokenClientCred
Get access token for client credential flow.
Description
object getAccessTokenClientCred()
|
Return Values
object
|
{
"access_token": "66822448858031556636",
"expires_in": 3600,
"refresh_token": null
}
|
Examples
callback.php
<?php
session_start();
// provide your application id,secret and redirect uri
$appId = '';
$appSecret = '';
$callbackUri[5] = 'http://localhost/php5/callback.php';
$callbackUri[7] = 'http://localhost/php7/callback.php';
$scope = 'cmuitaccount.basicinfo';
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[PHP_MAJOR_VERSION]);
$cmuOauth->setScope($scope);
if (isset($_GET['error'])) {
session_destroy();
exit($_GET['error']);
} elseif(!isset($_GET['code'])){
//set state
$_SESSION['oauth2state'] = $cmuOauth->setState();
// initial redirect to CMU Oauth login page.
$cmuOauth->initOauth();
// Check given state against previously stored one to mitigate CSRF attack
} elseif(empty($_GET['state']) || (isset($_SESSION['oauth2state']) && $_GET['state'] !== $_SESSION['oauth2state'])){
if (isset($_SESSION['oauth2state'])) {
unset($_SESSION['oauth2state']);
}
exit('Invalid state');
} else {
// code parse from CMU Oauth to your redirect uri.
$code = $_GET['code'];
// get access token from code.
$accessToken = $cmuOauth->getAccessTokenAuthCode($code);
$_SESSION['accessToken']=$accessToken->access_token;
echo "<pre>";
var_dump($accessToken);
echo "</pre>";
echo "<a href=\"userInfo.php\">View User Info</a>";
echo "<br>";
echo "<a href=\"index.php\">Home</a>";
}
?>
Download
cmu.oauth.class.php.zip
Reference
https://oauth.cmu.ac.th
https://tools.ietf.org/html/rfc6749