/** * @param Request $request * @return Response */ public function callbackAction(Request $request) { $requestToken = $request->getSession()->get(self::SESSION_REQUEST_TOKEN); $request->getSession()->remove(self::SESSION_REQUEST_TOKEN); $oauth_token = $request->get('oauth_token'); $oauth_verifier = $request->get('oauth_verifier'); $this->validateCallbackTokens($requestToken, $oauth_token, $oauth_verifier); $accessToken = $this->twitter->getAccessToken($requestToken, $oauth_verifier); $request->getSession()->set(self::SESSION_ACCESS_TOKEN, $accessToken); $response = new RedirectResponse($request->getSession()->get(self::SESSION_FORWARD_URI)); $request->getSession()->remove(self::SESSION_FORWARD_URI); return $response; }
public function testRegularCallbackFlow() { $requestToken = array('oauth_token' => 'foo', 'oauth_token_secret' => 'bar'); $this->session->set('rabus_twitter_request_token', $requestToken); $this->session->set('rabus_twitter_forward_uri', '/foobar'); $this->twitterMock->expects($this->once())->method('getAccessToken')->with($requestToken, 'barfoo')->will($this->returnValue(array('bar' => 'foo'))); $request = Request::create('http://localhost/callback', 'GET', array('oauth_token' => 'foo', 'oauth_verifier' => 'barfoo')); $request->setSession($this->session); $response = $this->controller->callbackAction($request); $this->assertEquals(302, $response->getStatusCode()); $this->assertTrue($response->isRedirect('/foobar')); $this->assertEquals(array('bar' => 'foo'), $this->session->get('rabus_twitter_access_token')); $this->assertNull($this->session->get('rabus_twitter_request_token')); $this->assertNull($this->session->get('rabus_twitter_forward_uri')); }