public function connect($accessToken = null) { if (!$this->token) { $accessToken = (string) $accessToken; } else { $accessToken = $this->token->getAccessToken(); } if (!$accessToken) { throw new \Exception('You must provide an access token.'); } $this->app = $this->appService->getApplication(self::RESOURCE_OWNER); $config = ['appId' => $this->app->getKey(), 'secret' => $this->app->getSecret(), 'fileUpload' => false, 'allowSignedRequest' => false]; $facebook = new \Facebook($config); $facebook->setAccessToken($accessToken); $user = $facebook->getUser(); try { if ($user) { return $facebook; } elseif ($this->token) { // Renew access token. FacebookSession::setDefaultApplication($this->app->getKey(), $this->app->getSecret()); $longLivedAccessToken = new AccessToken($this->token->getAccessToken()); try { // Get a code from a long-lived access token $code = AccessToken::getCodeFromAccessToken($longLivedAccessToken); } catch (FacebookSDKException $e) { throw new ExternalApiException($e->getMessage(), $e->getCode(), $e); } try { // Get a new long-lived access token from the code $newLongLivedAccessToken = AccessToken::getAccessTokenFromCode($code); } catch (FacebookSDKException $e) { throw new ExternalApiException($e->getMessage(), $e->getCode(), $e); } $accessToken = new AccessToken($newLongLivedAccessToken); // dump($accessToken->getInfo());exit; $this->token->setAccessToken($newLongLivedAccessToken); $this->tokenService->setToken($this->token); // Connect to Facebook REST API again. $this->connect(); } } catch (\FacebookApiException $e) { $user = null; } }
public function testALongLivedAccessTokenCanBeUsedToObtainACode() { $app = new FacebookApp('123', 'foo_secret'); $response = m::mock('Facebook\\Entities\\FacebookResponse'); $response->shouldReceive('getDecodedBody')->once()->andReturn(['code' => 'foo_code']); $client = m::mock('Facebook\\FacebookClient'); $client->shouldReceive('sendRequest')->with(m::type('Facebook\\Entities\\FacebookRequest'))->once()->andReturn($response); $code = AccessToken::getCodeFromAccessToken('foo_token', $app, $client); $this->assertEquals('foo_code', $code); }
/** * getExchangeToken - Returns an exchange token string which can be sent * back to clients and exchanged for a device-linked access token. * * @param string|null $appId * @param string|null $appSecret * * @return string */ public function getExchangeToken($appId = null, $appSecret = null) { return AccessToken::getCodeFromAccessToken($this->accessToken, $appId, $appSecret); }
public function testACodeCanBeUsedToObtainAnAccessToken() { $testUserAccessToken = FacebookTestHelper::$testUserAccessToken; $accessToken = new AccessToken($testUserAccessToken); $longLivedAccessToken = $accessToken->extend(); $code = AccessToken::getCodeFromAccessToken($longLivedAccessToken); $accessTokenFromCode = AccessToken::getAccessTokenFromCode($code); $this->assertInstanceOf('Facebook\\Entities\\AccessToken', $accessTokenFromCode); }
function sohail_do_embed($query) { session_start(); $query = explode('=', $query[2]); $query = explode('.', $query[1]); $album_id = $query[1]; FacebookSession::setDefaultApplication('XXXXXXXXXXXXXX6', '2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX7'); $tokenFileName = "./fb-token.txt"; $result = ""; $token = null; if (file_exists($tokenFileName)) { $token = file_get_contents($tokenFileName); $lastTokenRefresh = time() - filemtime($tokenFileName); if ($lastTokenRefresh > 60 * 60 * 24 * 7) { $longLivedAccessToken = new AccessToken($token); try { // Get a code from a long-lived access token $code = AccessToken::getCodeFromAccessToken($longLivedAccessToken); } catch (FacebookSDKException $e) { $result = 'Error getting code: ' . $e->getMessage(); unlink($tokenFileName); } try { // Get a new long-lived access token from the code $token = AccessToken::getAccessTokenFromCode($code); file_put_contents($tokenFileName, $token); } catch (FacebookSDKException $e) { $result = 'Error getting a new long-lived access token: ' . $e->getMessage(); unlink($tokenFileName); } } } if ($token == null) { global $wp; $current_url = add_query_arg($wp->query_string, '', home_url($wp->request)); $helper = new FacebookRedirectLoginHelper($current_url); $permissions = array("scope" => 'user_photos'); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookSDKException $e) { $session = null; } if ($session) { $accessToken = $session->getAccessToken(); $token = $accessToken->extend(); file_put_contents($tokenFileName, $token); } else { $result = '<a href="' . $helper->getLoginUrl($permissions) . '">Relier le compte facebook au blog</a>'; } } if ($token != null) { try { $session = new FacebookSession($token); $request = new FacebookRequest($session, 'GET', '/' . $album_id . '/photos'); } catch (FacebookRequestException $e) { $result = 'Error getting code: ' . $e->getMessage(); unlink($tokenFileName); } $response = $request->execute(); $graphObject = $response->getGraphObject()->getProperty('data')->asArray(); $border = 1; $result .= '<style type="text/css"> .grid { background: #EEE; max-width: 1183px; width: 1183px; } /* clearfix */ .grid:after { content: \'\'; display: block; clear: both; } .grid-item { border: ' . $border . 'px solid white; float: left; } </style>'; $result .= '<div id="grid">'; $small = 4; $height = array(5 => 113, 6 => 226 + $border * 2); $width = array(5 => 169, 6 => 338 + $border * 2); $i = 0; foreach ($graphObject as $photos) { $i++; $image = $photos->images[3]; $bigImage = $photos->images[1]; $size = 6; // $rand = rand(0, 100); // if($small == 0 && $rand<50){ // $small = 3; // } $image = $photos->images[3]; //Peut arriver sur certain formats if (!$image) { $image = $photos->images[1]; } //On sait jamais ca coute rien if (!$image) { $image = $photos->images[0]; } if ($i % 7 == 0) { $small = 4; } if ($small > 0) { $size = 5; $small--; } if ($image->height > $image->width) { //$image = $photos->images[3]; if ($size == 5) { $size = 6; $small++; } $h = $height[$size]; $w = $width[$size] / 2 - 1; } else { $h = $height[$size]; $w = $width[$size]; } //Panorama : full screen. if ($image->width > $image->height * 2) { $w = $w * 2; } //print_r($image); $result .= '<div class="grid-item grid-item-width' . $size . '"> <a class="img-gallery" href="' . $photos->images[0]->source . '"> <img src=' . $image->source . ' style="display:block;height:' . $h . 'px;width:' . $w . 'px"/> </a> </div>'; } $result .= '</div>'; $result .= "\n <script type='text/javascript'>\n \$('#grid').masonry({itemSelector: '.grid-item',columnWidth: " . (169 + $border * 2) . "});\n \$('.img-gallery').magnificPopup({\n type: 'image',\n gallery:{\n enabled:true\n }\n });\n </script>"; } return $result; }
public function testALongLivedAccessTokenCanBeUsedToObtainACode() { $app = new FacebookApp('123', 'foo_secret'); $response = $this->createFacebookResponseMockWithDecodedBody(['code' => 'foo_code']); $client = $this->createFacebookClientMockWithResponse($response); $code = AccessToken::getCodeFromAccessToken('foo_token', $app, $client); $this->assertEquals('foo_code', $code); }
public function search_fb_pages() { $partner = $this->partner; $longLivedAccessToken = new AccessToken($partner->fb_longlived_access_token); $code = AccessToken::getCodeFromAccessToken($longLivedAccessToken); $newLongLivedAccessToken = AccessToken::getAccessTokenFromCode($code); $session = new FacebookSession($newLongLivedAccessToken); if ($session) { $user_id = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); $pages = (new FacebookRequest($session, "GET", "/{$user_id->getId()}/accounts"))->execute()->getGraphObject(GraphUser::className()); $data = $pages->asArray(); return $data; } }