Ejemplo n.º 1
0
 /**
  * Get access token
  *
  * @param   string $verifier OAuth verifier, got after authorization
  * @access  protected
  * @return  array
  */
 protected function _setupAccessToken($verifier)
 {
     ApiDebug::p('requesting access token');
     $oauth = $this->_getOAuthInstance(OAUTH_AUTH_TYPE_FORM);
     $oauth->setToken(self::$_requestToken, self::$_requestSecret);
     $accessTokenInfo = $oauth->getAccessToken(ApiUtils::getFullUrl(self::URL_ATOKEN, 'api'), null, $verifier);
     ApiDebug::p('got access token info', $accessTokenInfo);
     self::$_accessToken = $accessTokenInfo['oauth_token'];
     self::$_accessSecret = $accessTokenInfo['oauth_token_secret'];
     return $accessTokenInfo;
 }
Ejemplo n.º 2
0
 /**
  * Get OAuth instance
  *
  * @param   integer $authType (Optional) Auth type
  * @access  protected
  * @return  object
  */
 protected function _getOAuthInstance($authType = null)
 {
     ApiDebug::p('get OAuth instance');
     $options = array('consumer_key' => self::$_apiKey, 'consumer_secret' => self::$_secret, 'server_uri' => UPWORK_BASE_URL, 'request_token_uri' => ApiUtils::getFullUrl(self::URL_RTOKEN, 'api'), 'authorize_uri' => self::URL_AUTH, 'access_token_uri' => ApiUtils::getFullUrl(self::URL_ATOKEN, 'api'));
     $oauth = \OAuthStore::instance('Session', $options);
     return $oauth;
 }
Ejemplo n.º 3
0
 /**
  * @test
  */
 public function testGetFullUrl()
 {
     $url = Utils::getFullUrl('/auth/v1/oauth/token/access', 'api');
     $this->assertEquals('https://www.upwork.com/api/auth/v1/oauth/token/access', $url);
 }
Ejemplo n.º 4
0
 /**
  * Auth process 
  * 
  * @access  public
  * @return  string
  */
 public function auth()
 {
     ApiDebug::p('running auth process in ' . __CLASS__);
     if (self::$_accessToken === null && self::$_verifier === null) {
         if (self::$_requestToken === null && self::$_requestSecret === null) {
             // web-based application should setup and save request token itself
             // to be able use it after callback
             $this->setupRequestToken();
         }
         $authUrl = ApiUtils::getFullUrl(self::URL_AUTH) . '?oauth_token=' . self::$_requestToken;
         if (self::$_mode === 'web') {
             // authorize web application via browser
             header('Location: ' . $authUrl);
         } elseif (self::$_mode === 'nonweb') {
             // authorize nonweb application
             ApiDebug::p('found [nonweb] mode, need to autorize application manually');
             $prompt = 'Visit ' . $authUrl . "\n" . 'and provide oauth_verifier for further authorization' . "\n" . '$ ';
             if (PHP_OS == 'WINNT') {
                 echo $prompt;
                 $verifier = stream_get_line(STDIN, 1024, PHP_EOL);
             } else {
                 $verifier = readline($prompt);
             }
             // get access token
             $this->_setupAccessToken($verifier);
         }
     } elseif (self::$_accessToken === null && self::$_verifier !== null) {
         // get access token, web-based callback
         $this->_setupAccessToken(self::$_verifier);
     } else {
         // access_token isset
     }
     return array('access_token' => self::$_accessToken, 'access_secret' => self::$_accessSecret);
 }