Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function process()
- {
- // these need to be grabbed from database
- $THREE_LEGGED_CONSUMER_KEY = 'www.mysite.com';
- $THREE_LEGGED_SIGNATURE_METHOD = 'HMAC-SHA1';
- $THREE_LEGGED_CONSUMER_SECRET_HMAC = 'mysecret';
- $THREE_LEGGED_SCOPES = array('https://mail.google.com/');
- ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries');
- require_once 'Zend/Oauth/Consumer.php';
- require_once 'Zend/Crypt/Rsa/Key/Private.php';
- require_once 'Zend/Mail/Protocol/Imap.php';
- require_once 'Zend/Mail/Storage/Imap.php';
- /* need a better way of setting this, but that will come in once I setup login system */
- $options = array(
- 'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
- 'version' => '1.0',
- 'consumerKey' => $THREE_LEGGED_CONSUMER_KEY,
- 'callbackUrl' => $this->_getCurrentUrl(),
- 'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
- 'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
- 'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
- );
- $options['signatureMethod'] = 'HMAC-SHA1';
- $options['consumerSecret'] = $THREE_LEGGED_CONSUMER_SECRET_HMAC;
- /* might need to rewrite this as $this->zend->Zend_Oauth_Consumer($options) */
- $consumer = new Zend_Oauth_Consumer($options);
- /**
- * When using HMAC-SHA1, you need to persist the request token in some way.
- * This is because you'll need the request token's token secret when upgrading
- * to an access token later on. The example below saves the token object
- * as a session variable.
- */
- if (($this->session->userdata('ACCESS_TOKEN') == null)) {
- if (($this->session->userdata('REQUEST_TOKEN') == null)) {
- // Get Request Token and redirect to Google
- $this->session->set_userdata('REQUEST_TOKEN', serialize($consumer->getRequestToken(array('scope' => implode(' ', $THREE_LEGGED_SCOPES)))));
- $consumer->redirect();
- } else {
- // Have Request Token already, Get Access Token
- $this->session->set_userdata('ACCESS_TOKEN',$consumer->getAccessToken($_GET, unserialize($this->session->userdata('REQUEST_TOKEN'))));
- if($this->philadelity->store_access_token(serialize($this->session->userdata('ACCESS_TOKEN'),$this->tank_auth->get_user_id()))) {
- $this->session->set_flashdata('flash-confirm','Successfully authenticated');
- $this->session->unset_userdata('oauth_email');
- redirect(current_url());
- } else {
- $this->session->set_flashdata('flash-error','Failed to authenticate');
- $this->session->unset_userdata('ACCESS_TOKEN');
- $this->session->unset_userdata('REQUEST_TOKEN');
- redirect('/mail/add');
- }
- }
- } else {
- if($this->session->userdata('ACCESS_TOKEN') !== null) {
- $this->session->set_flashdata('flash-confirm','Successfully authenticated');
- redirect('/mail/view');
- } else {
- $this->session->set_flashdata('flash-error','Failed to authenticate');
- $this->session->unset_userdata('ACCESS_TOKEN');
- $this->session->unset_userdata('REQUEST_TOKEN');
- redirect('/mail/add');
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement