public function connectOauth2($options)
    {
        $token = false;

        // source oauth provider
        $oauthProvider = $this->getProvider();

        // error
        if(\Craft\craft()->request->getParam('error'))
        {
            throw new \Exception("An error occured: ".\Craft\craft()->request->getParam('error'));
        }

        $state = \Craft\craft()->request->getParam('state');
        $code = \Craft\craft()->request->getParam('code');
        $oauth2state = \Craft\craft()->httpSession->get('oauth2state');

        if (is_null($code))
        {
            $authorizationOptions = $options['authorizationOptions'];

            if(count($options['scope']) > 0)
            {
                $authorizationOptions['scope'] = $options['scope'];
            }

            $authorizationUrl = $oauthProvider->getAuthorizationUrl($authorizationOptions);

            $state = $oauthProvider->getState();

            \Craft\craft()->httpSession->add('oauth2state', $state);

            OauthPlugin::log('OAuth 2.0 Connect - Redirect to the authorization URL'."\r\n".
	            "authorizationUrl: ".$authorizationUrl."\r\n".
	            "oauth2state: ".\Craft\craft()->httpSession->get('oauth2state')
	        , LogLevel::Info);

            \Craft\craft()->request->redirect($authorizationUrl);
        }
        elseif (!$state || $state !== $oauth2state)
        {
            OauthPlugin::log('OAuth 2.0 Connect - Invalid State'."\r\n".print_r([
                'state' => $state,
                'oauth2state' => $oauth2state,
            ], true), LogLevel::Info);

            \Craft\craft()->httpSession->remove('oauth2state');

            throw new \Exception("Invalid state");

        }
        else
        {
            OauthPlugin::log('OAuth 2.0 Connect - Authorization code retrieved: '.$code, LogLevel::Info);

            $token = $oauthProvider->getAccessToken('authorization_code', [
                'code' => $code
            ]);

            OauthPlugin::log("OAuth 2.0 Connect - Get Access Token\r\n".
	            "Access token: \r\n".
	            print_r($token, true)
	        , LogLevel::Info);
        }

        return $token;
    }
public function connectOauth2($options)
    {
        $token = false;

        // source oauth provider
        $oauthProvider = $this->getProvider();

        // error
        if(\Craft\craft()->request->getParam('error'))
        {
            throw new \Exception("An error occured: ".\Craft\craft()->request->getParam('error'));
        }

        $state = \Craft\craft()->request->getParam('state');
        $code = \Craft\craft()->request->getParam('code');
        $oauth2state = \Craft\craft()->httpSession->get('oauth2state');

        if (is_null($code))
        {
            $authorizationOptions = $options['authorizationOptions'];

            if(count($options['scope']) > 0)
            {
                $authorizationOptions['scope'] = $options['scope'];
            }

            $authorizationUrl = $oauthProvider->getAuthorizationUrl($authorizationOptions);

            $state = $oauthProvider->getState();

            \Craft\craft()->httpSession->add('oauth2state', $state);

            OauthPlugin::log('OAuth 2.0 Connect - Redirect to the authorization URL'."\r\n".
	            "authorizationUrl: ".$authorizationUrl."\r\n".
	            "oauth2state: ".\Craft\craft()->httpSession->get('oauth2state')
	        , LogLevel::Info);

            \Craft\craft()->request->redirect($authorizationUrl);
        }
        elseif (!$state || $state !== $oauth2state)
        {
            OauthPlugin::log('OAuth 2.0 Connect - Invalid State'."\r\n".print_r([
                'state' => $state,
                'oauth2state' => $oauth2state,
            ], true), LogLevel::Info);

            \Craft\craft()->httpSession->remove('oauth2state');

            throw new \Exception("Invalid state");

        }
        else
        {
            OauthPlugin::log('OAuth 2.0 Connect - Authorization code retrieved: '.$code, LogLevel::Info);

            $token = $oauthProvider->getAccessToken('authorization_code', [
                'code' => $code
            ]);

            OauthPlugin::log("OAuth 2.0 Connect - Get Access Token\r\n".
	            "Access token: \r\n".
	            print_r($token, true)
	        , LogLevel::Info);
        }

        return $token;
    }
public function connectOauth2 ( $ options ) { $ token = false ; // source oauth provider $ oauthProvider = $ this -> getProvider ( ) ; // error if ( \ Craft \ craft ( ) -> request -> getParam ( 'error' ) ) { throw new \ Exception ( "An error occured: " . \ Craft \ craft ( ) -> request -> getParam ( 'error' ) ) ; } $ state = \ Craft \ craft ( ) -> request -> getParam ( 'state' ) ; $ code = \ Craft \ craft ( ) -> request -> getParam ( 'code' ) ; $ oauth2state = \ Craft \ craft ( ) -> httpSession -> get ( 'oauth2state' ) ; if ( is_null ( $ code ) ) { $ authorizationOptions = $ options [ 'authorizationOptions' ] ; if ( count ( $ options [ 'scope' ] ) > 0 ) { $ authorizationOptions [ 'scope' ] = $ options [ 'scope' ] ; } $ authorizationUrl = $ oauthProvider -> getAuthorizationUrl ( $ authorizationOptions ) ; $ state = $ oauthProvider -> getState ( ) ; \ Craft \ craft ( ) -> httpSession -> add ( 'oauth2state' , $ state ) ; OauthPlugin :: log ( 'OAuth 2.0 Connect - Redirect to the authorization URL' . "\r\n" . "authorizationUrl: " . $ authorizationUrl . "\r\n" . "oauth2state: " . \ Craft \ craft ( ) -> httpSession -> get ( 'oauth2state' ) , LogLevel :: Info ) ; \ Craft \ craft ( ) -> request -> redirect ( $ authorizationUrl ) ; } elseif ( ! $ state || $ state !== $ oauth2state ) { OauthPlugin :: log ( 'OAuth 2.0 Connect - Invalid State' . "\r\n" . print_r ( [ 'state' => $ state , 'oauth2state' => $ oauth2state , ] , true ) , LogLevel :: Info ) ; \ Craft \ craft ( ) -> httpSession -> remove ( 'oauth2state' ) ; throw new \ Exception ( "Invalid state" ) ; } else { OauthPlugin :: log ( 'OAuth 2.0 Connect - Authorization code retrieved: ' . $ code , LogLevel :: Info ) ; $ token = $ oauthProvider -> getAccessToken ( 'authorization_code' , [ 'code' => $ code ] ) ; OauthPlugin :: log ( "OAuth 2.0 Connect - Get Access Token\r\n" . "Access token: \r\n" . print_r ( $ token , true ) , LogLevel :: Info ) ; } return $ token ; }
Connect OAuth 2.0
Connect OAuth 2 . 0