public function get_access_tokens($scope = array())
 {
     if (!empty($_GET['oauth_verifier']) && !empty($_GET['oauth_token']) && isset($_SESSION['oauth_token_secret'])) {
         parent::$oauth_settings['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
         unset($_SESSION['oauth_token_secret']);
         $oauth_fields['oauth_verifier'] = $_GET['oauth_verifier'];
         $oauth_fields['oauth_token'] = $_GET['oauth_token'];
         $url = 'https://secure.' . self::$url_part . '.co.nz/Oauth/AccessToken';
         $method = 'POST';
         parent::build_request($url, $method, $oauth_fields);
         $res = parent::do_request($url, $method);
         parse_str($res[0], $res[0]);
         if (!isset($res[0]['oauth_token']) || !isset($res[0]['oauth_token_secret'])) {
             switch ($res[1]['http_code']) {
                 case self::TM_ERROR_REQUEST:
                     $this->last_error = self::TM_ERROR_REQUEST;
                     break;
                 case self::TM_ERROR_AUTHENTICATION:
                     $this->last_error = self::TM_ERROR_AUTHENTICATION;
                     break;
                 case self::TM_ERROR_RATE_LIMIT:
                     $this->last_error = self::TM_ERROR_RATE_LIMIT;
                     break;
                 case self::TM_ERROR_GENERIC:
                     $this->last_error = self::TM_ERROR_GENERIC;
                     break;
             }
             return $res;
         }
         parent::$oauth_settings = array_merge(parent::$oauth_settings, array('oauth_token' => $res[0]['oauth_token'], 'oauth_token_secret' => $res[0]['oauth_token_secret']));
         return $res;
     }
     $scope_str = implode($scope, ',');
     $oauth_fields = array('oauth_callback' => self::$callback_url, 'scope' => $scope_str);
     $url = 'https://secure.' . self::$url_part . '.co.nz/Oauth/RequestToken';
     $method = 'POST';
     parent::build_request($url, $method, $oauth_fields, array('scope'));
     $url .= '?scope=' . $oauth_fields['scope'];
     $res = parent::do_request($url, $method);
     parse_str($res[0], $res[0]);
     if (!isset($res[0]['oauth_token']) || !isset($res[0]['oauth_token_secret'])) {
         switch ($res[1]['http_code']) {
             case self::TM_ERROR_REQUEST:
                 $this->last_error = self::TM_ERROR_REQUEST;
                 break;
             case self::TM_ERROR_AUTHENTICATION:
                 $this->last_error = self::TM_ERROR_AUTHENTICATION;
                 break;
             case self::TM_ERROR_RATE_LIMIT:
                 $this->last_error = self::TM_ERROR_RATE_LIMIT;
                 break;
             case self::TM_ERROR_GENERIC:
                 $this->last_error = self::TM_ERROR_GENERIC;
                 break;
         }
         return $res;
     }
     // store token secret
     $_SESSION['oauth_token_secret'] = $res[0]['oauth_token_secret'];
     // redirect to trademe to get client access token
     header('Location: https://secure.' . self::$url_part . '.co.nz/Oauth/Authorize?oauth_token=' . $res[0]['oauth_token']);
     exit;
 }