|
|
Line 280: |
Line 280: |
| | | |
| == Download == | | == Download == |
− | [http://myweb.cmu.ac.th/supawit.w/cmu.oauth.class.php.zip cmu.oauth.class.php.zip] | + | [https://myweb.cmu.ac.th/supawit.w/cmu.oauth.class.php.zip cmu.oauth.class.php.zip] |
| | | |
| == Reference == | | == Reference == |
| [https://oauth.cmu.ac.th https://oauth.cmu.ac.th]<br> | | [https://oauth.cmu.ac.th https://oauth.cmu.ac.th]<br> |
| [https://tools.ietf.org/html/rfc6749 https://tools.ietf.org/html/rfc6749] | | [https://tools.ietf.org/html/rfc6749 https://tools.ietf.org/html/rfc6749] |
Latest revision as of 09:27, 2 February 2024
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