Advertisement
Guest User

Gmail Oauth with Zend

a guest
Feb 10th, 2011
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.18 KB | None | 0 0
  1. function process()
  2. {
  3.         // these need to be grabbed from database
  4.         $THREE_LEGGED_CONSUMER_KEY = 'www.mysite.com';
  5.         $THREE_LEGGED_SIGNATURE_METHOD = 'HMAC-SHA1';
  6.         $THREE_LEGGED_CONSUMER_SECRET_HMAC = 'mysecret';
  7.        
  8.         $THREE_LEGGED_SCOPES = array('https://mail.google.com/');
  9.        
  10.         ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries');
  11.        
  12.         require_once 'Zend/Oauth/Consumer.php';
  13.         require_once 'Zend/Crypt/Rsa/Key/Private.php';
  14.         require_once 'Zend/Mail/Protocol/Imap.php';
  15.         require_once 'Zend/Mail/Storage/Imap.php';
  16.        
  17.         /* need a better way of setting this, but that will come in once I setup login system */
  18.        
  19.         $options = array(
  20.             'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
  21.             'version' => '1.0',
  22.             'consumerKey' => $THREE_LEGGED_CONSUMER_KEY,
  23.             'callbackUrl' => $this->_getCurrentUrl(),
  24.             'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
  25.             'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
  26.             'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
  27.         );
  28.        
  29.         $options['signatureMethod'] = 'HMAC-SHA1';
  30.         $options['consumerSecret'] = $THREE_LEGGED_CONSUMER_SECRET_HMAC;
  31.        
  32.        
  33.         /* might need to rewrite this as $this->zend->Zend_Oauth_Consumer($options) */
  34.        
  35.         $consumer = new Zend_Oauth_Consumer($options);
  36.        
  37.         /**
  38.          * When using HMAC-SHA1, you need to persist the request token in some way.
  39.          * This is because you'll need the request token's token secret when upgrading
  40.          * to an access token later on. The example below saves the token object
  41.          * as a session variable.
  42.          */
  43.         if (($this->session->userdata('ACCESS_TOKEN') == null)) {
  44.           if (($this->session->userdata('REQUEST_TOKEN') == null)) {
  45.             // Get Request Token and redirect to Google
  46.             $this->session->set_userdata('REQUEST_TOKEN', serialize($consumer->getRequestToken(array('scope' => implode(' ', $THREE_LEGGED_SCOPES)))));
  47.             $consumer->redirect();
  48.           } else {
  49.             // Have Request Token already, Get Access Token
  50.            $this->session->set_userdata('ACCESS_TOKEN',$consumer->getAccessToken($_GET, unserialize($this->session->userdata('REQUEST_TOKEN'))));
  51.           if($this->philadelity->store_access_token(serialize($this->session->userdata('ACCESS_TOKEN'),$this->tank_auth->get_user_id()))) {
  52.                 $this->session->set_flashdata('flash-confirm','Successfully authenticated');
  53.                 $this->session->unset_userdata('oauth_email');
  54.                 redirect(current_url());
  55.             } else {
  56.                 $this->session->set_flashdata('flash-error','Failed to authenticate');
  57.                 $this->session->unset_userdata('ACCESS_TOKEN');
  58.                 $this->session->unset_userdata('REQUEST_TOKEN');
  59.                 redirect('/mail/add');
  60.             }
  61.    
  62.           }
  63.         } else {
  64.               if($this->session->userdata('ACCESS_TOKEN') !== null) {
  65.                 $this->session->set_flashdata('flash-confirm','Successfully authenticated');
  66.                 redirect('/mail/view');
  67.               } else {
  68.                 $this->session->set_flashdata('flash-error','Failed to authenticate');
  69.                 $this->session->unset_userdata('ACCESS_TOKEN');
  70.                 $this->session->unset_userdata('REQUEST_TOKEN');
  71.                 redirect('/mail/add');
  72.               }
  73.         }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement