/** * Exchange the request token for an access token. * * $token = $provider->access_token($consumer, $token); * * @param Consumer consumer * @param Token_Request token * @param array additional request parameters * @return Token_Access */ public function access_token(OAuth_Consumer $consumer, OAuth_Token_Request $token, array $params = NULL) { // Create a new GET request for a request token with the required parameters $request = OAuth_Request::forge('access', 'GET', $this->url_access_token(), array('oauth_consumer_key' => $consumer->key, 'oauth_token' => $token->access_token, 'oauth_verifier' => $token->verifier)); if ($params) { // Load user parameters $request->params($params); } // Sign the request using only the consumer, no token is available yet $request->sign($this->signature, $consumer, $token); // Create a response from the request $response = $request->execute(); // Store this token somewhere useful return OAuth_Token::forge('access', array('access_token' => $response->param('oauth_token'), 'secret' => $response->param('oauth_token_secret'), 'uid' => $response->param($this->uid_key) ?: get_instance()->input->get_post($this->uid_key))); }