Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Here's an example of how to get your oauth2.0 access token and get a list of your scheduled meetings.
- I adapted it from this example: http://stackoverflow.com/questions/9273576/gotowebinar-api-php. Please give that guy full credit. I just changed a few lines of code.
- gotoMeetingClass.php:
- <?php
- define('GOTO_MEETING_API_KEY','Your api key goes here');
- class OAuth_En{
- protected $_accessToken;
- protected $_userId;
- protected $_organizerKey;
- protected $_refreshToken;
- protected $_expiresIn;
- public function getAccessToken(){
- return $this->_accessToken;
- }
- public function setAccessToken($token){
- $this->_accessToken = $token;
- }
- public function getUserId(){
- return $this->_userId;
- }
- public function setUserId($id){
- $this->_userId = $id;
- }
- public function getOrganizerKey(){
- return $this->_organizerKey;
- }
- public function setOrganizerKey($key){
- $this->_organizerKey = $key;
- }
- public function getRefreshToken(){
- return $this->_refreshToken;
- }
- public function setRefreshToken($token){
- $this->_refreshToken = $token;
- }
- public function getExpiresIn(){
- return $this->_expiresIn;
- }
- public function setExpiresIn($expiresIn){
- $this->_expiresIn = $expiresIn;
- }
- }
- class OAuth_Db{
- function getToken(){
- }
- }
- class myOAuth{
- protected $_redirectUrl;
- protected $_OAuthEnObj;
- protected $_curlHeader = array();
- protected $_apiResponse;
- protected $_apiError;
- protected $_apiErrorCode;
- protected $_apiRequestUrl;
- protected $_apiResponseKey;
- protected $_accessTokenUrl;
- protected $_meetingId;
- protected $_registrantInfo = array();
- protected $_apiRequestType;
- protected $_apiPostData;
- public function __construct(OAuth_En $oAuthEn){
- $this->_OAuthEnObj = $oAuthEn;
- }
- public function getOAuthEntityClone(){
- return clone $this->_OAuthEnObj;
- }
- public function getMeetingId(){
- return $this->_meetingId;
- }
- public function setMeetingId($id){
- $id = (int)$id;
- $this->_meetingId = empty($id) ? 0 : $id;
- }
- public function setApiErrorCode($code){
- $this->_apiErrorCode = $code;
- }
- public function getApiErrorCode(){
- return $this->_apiErrorCode;
- }
- public function getApiAuthorizationUrl(){
- return 'https://api.citrixonline.com/oauth/authorize?client_id='.GOTO_MEETING_API_KEY.'&redirect_uri='.$this->getRedirectUrl();
- }
- public function getApiKey(){
- return GOTO_MEETING_API_KEY;
- }
- public function getApiRequestUrl(){
- return $this->_apiRequestUrl;
- }
- public function setApiRequestUrl($url){
- $this->_apiRequestUrl = $url;
- }
- public function setRedirectUrl($url){
- $this->_redirectUrl = urlencode($url);
- }
- public function getRedirectUrl(){
- return $this->_redirectUrl;
- }
- public function setCurlHeader($header){
- $this->_curlHeader = $header;
- }
- public function getCurlHeader(){
- return $this->_curlHeader;
- }
- public function setApiResponseKey($key){
- $this->_apiResponseKey = $key;
- }
- public function getApiResponseKey(){
- return $this->_apiResponseKey;
- }
- public function setRegistrantInfo($arrInfo){
- $this->_registrantInfo = $arrInfo;
- }
- public function getRegistrantInfo(){
- return $this->_registrantInfo;
- }
- public function authorizeUsingResponseKey($responseKey){
- $this->setApiResponseKey($responseKey);
- $this->setApiTokenUsingResponseKey();
- }
- protected function setAccessTokenUrl(){
- $url = 'https://api.citrixonline.com/oauth/access_token?grant_type=authorization_code&code={responseKey}&client_id={api_key}';
- $url = str_replace('{api_key}', $this->getApiKey(), $url);
- $url = str_replace('{responseKey}', $this->getApiResponseKey(), $url);
- $this->_accessTokenUrl = $url;
- }
- protected function getAccessTokenUrl(){
- return $this->_accessTokenUrl;
- }
- protected function resetApiError(){
- $this->_apiError = '';
- }
- public function setApiTokenUsingResponseKey(){
- //set the access token url
- $this->setAccessTokenUrl();
- //set the url where api should go for request
- $this->setApiRequestUrl($this->getAccessTokenUrl());
- //make request
- $this->makeApiRequest();
- if($this->hasApiError()){
- echo $this->getApiError();
- }else{
- //if api does not have any error set the token
- echo $this->getResponseData();
- $responseData = json_decode($this->getResponseData());
- $this->_OAuthEnObj->setAccessToken($responseData->access_token);
- $this->_OAuthEnObj->setOrganizerKey($responseData->organizer_key);
- $this->_OAuthEnObj->setRefreshToken($responseData->refresh_token);
- $this->_OAuthEnObj->setExpiresIn($responseData->expires_in);
- }
- }
- function hasApiError(){
- return $this->getApiError() ? 1 : 0;
- }
- function getApiError(){
- return $this->_apiError;
- }
- function setApiError($errors){
- return $this->_apiError = $errors;
- }
- function getApiRequestType(){
- return $this->_apiRequestType;
- }
- function setApiRequestType($type){
- return $this->_apiRequestType = $type;
- }
- function getResponseData(){
- return $this->_apiResponse;
- }
- function setApiPostData($data){
- return $this->_apiPostData = $data;
- }
- function getApiPostData(){
- return $this->_apiPostData;
- }
- function makeApiRequest(){
- $header = array();
- $this->getApiRequestUrl();
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($ch, CURLOPT_URL, $this->getApiRequestUrl());
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- if($this->getApiRequestType()=='POST'){
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $this->getApiPostData());
- }
- if($this->getCurlHeader()){
- $headers = $this->getCurlHeader();
- }else{
- $headers = array(
- "HTTP/1.1",
- "Content-type: application/json",
- "Accept: application/json",
- "Authorization: OAuth oauth_token=".$this->_OAuthEnObj->getAccessToken()
- );
- }
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- $data = curl_exec($ch);
- $validResponseCodes = array(200,201,409);
- $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- $this->resetApiError();
- if (curl_errno($ch)) {
- $this->setApiError(array(curl_error($ch)));
- } elseif(!in_array($responseCode, $validResponseCodes)){
- if($this->isJsonString($data)){
- $data = json_decode($data);
- }
- $this->setApiError($data);
- $this->setApiErrorCode($responseCode);
- }else {
- $this->_apiResponse = $data;
- $_SESSION['gotoApiResponse'] = $this->getResponseData();
- curl_close($ch);
- }
- }
- function isAuthorizationRequiredAgain(){
- $arrAuthorizationRequiredCodes = array(400,401,403,500);
- $isAuthRequired = 0;
- $error = $this->getApiError();
- $responseCode = $this->getApiErrorCode();
- //we might have to add more exception in this condition
- if(in_array($responseCode, $arrAuthorizationRequiredCodes)){
- if($responseCode==400 && is_object($error)){ //because for 400 error sometime one needs to authenticate again
- foreach($error as $single){
- $pos = strpos($single,'Authorization');
- if($pos!==false){
- $isAuthRequired = 1;
- }
- }
- }else{
- $isAuthRequired = 1;
- }
- }
- return $isAuthRequired;
- }
- function getMeetings(){
- $url = 'https://api.citrixonline.com/G2M/rest/meetings?scheduled=true&oauth_token='.$this->_OAuthEnObj->getAccessToken();
- $this->setApiRequestUrl($url);
- $this->setApiRequestType('GET');
- $this->makeApiRequest();
- if($this->hasApiError()){
- return null;
- }
- $meetings = json_decode($this->getResponseData());
- $test = $this->_OAuthEnObj->getAccessToken();
- return $meetings;
- }
- function getAuthURL(){
- $url = 'https://api.citrixonline.com/G2M/rest/meetings?scheduled=true&oauth_token='.$this->_OAuthEnObj->getAccessToken();
- return $url;
- }
- function isJsonString($string){
- $isJson = 0;
- $decodedString = json_decode($string);
- if(is_array($decodedString) || is_object($decodedString))
- $isJson = 1;
- return $isJson;
- }
- }
- -----------------------------
- Authorize.php:
- <?php
- include_once "gotoMeetingClass.php";
- define('REDIRECT_URL_AFTER_AUTHENTICATION','http://example.com/authorize.php'); //this is the url where your get token code would be written.
- session_start();
- $obj = new OAuth_En();
- $oauth = new myOAuth($obj);
- if(!isset($_GET['code'])){
- goForAuthorization();
- }else{ //when user authenticates and redirect back to application redirect url, get the token
- $oauth->authorizeUsingResponseKey($_GET['code']);
- if(!$oauth->hasApiError()){
- $objOAuthEn = $oauth->getOAuthEntityClone();
- $_SESSION['oauthEn'] = serialize($objOAuthEn);
- header('Location: get-all-meetings.php');
- }
- }
- //this function has been used for getting the key using which we can get the access token
- function goForAuthorization(){
- global $oauth;
- $oauth->setRedirectUrl(REDIRECT_URL_AFTER_AUTHENTICATION);
- $url = $oauth->getApiAuthorizationUrl();
- header('Location: '.$url);
- }
- --------------------
- gotoMeetingClass.php:
- <?php
- include_once "gotoMeetingClass.php";
- session_start();
- $obj = unserialize($_SESSION['oauthEn']);
- /*
- this can be used to fetch the stored access token key and organizer key from database and use it without asking the authetication from user again
- $obj = new OAuth_En();
- $obj->setAccessToken('token');
- $obj->setOrganizerKey('organizer key');
- */
- $oauth = new myOAuth($obj);
- $meetings = $oauth->getMeetings();
- echo '<pre>';
- if(!$oauth->hasApiError()){
- print_r($meetings);
- }else{
- print_r($oauth->getApiError());
- print_r($oauth->getApiErrorCode());
- print_r($oauth->getAuthURL());
- }
- exit;
- /*$webinars = $oauth->getUpcomingWebinars();
- if(!$oauth->hasApiError()){
- print_r($webinars);
- }else{
- print_r($oauth->getApiError());
- }
- exit;
- $registrantInfo = array(
- "firstName"=>"ashish",
- "lastName"=>"mehta",
- "email"=>"test@test.com",
- );
- $oauth->setWebinarId(525120321);
- $oauth->setRegistrantInfo($registrantInfo);
- $res = $oauth->createRegistrant();
- echo $oauth->getApiErrorCode();
- if(!$oauth->hasApiError()){
- print_r($res);
- }else{
- echo 'error';
- print_r($oauth->getApiError());
- }
- exit;
- $oauth->setWebinarId(525120321);
- $webinar = $oauth->getWebinar();
- if(!$oauth->hasApiError()){
- print_r($webinar);
- }else{
- print_r($oauth->getApiError());
- echo $oauth->getApiErrorCode();
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement