Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About dweb

  • Rank
    Advanced Member

Profile Information

  • Gender
    Not Telling
  1. Hi I'm having some issues working with the facebook sdk5 so im wondering if anyone has had the same issues, i've looked on google and can only see some issues when used with a framework like codeigniter When I run my login.php script it shows the facebook login button and sucessfully redirects me to the callback page, and shows some metadata, but following that comes some errors Notice: Undefined variable: config in C:\www\fb\fb-callback.php on line 52 Fatal error: Uncaught exception 'Facebook\Exceptions\FacebookSDKException' with message 'Access token metadata contains unexpected app ID.' in C:\www\fb\facebook-php-sdk-v4-5.0.0\src\Facebook\Authentication\AccessTokenMetadata.php on line 329 Facebook\Exceptions\FacebookSDKException: Access token metadata contains unexpected app ID. in C:\www\fb\facebook-php-sdk-v4-5.0.0\src\Facebook\Authentication\AccessTokenMetadata.php on line 329 oddly these errors show despite me taking the code directly from the facebook developers area, and the only things i've added to their code sample is the top 2 lines session_start(); require_once ('facebook-php-sdk-v4-5.0.0/src/Facebook/autoload.php'); my scripts are login.php <?php session_start(); require_once ('facebook-php-sdk-v4-5.0.0/src/Facebook/autoload.php'); $fb = new Facebook\Facebook([ 'app_id' => '', 'app_secret' => '', 'default_graph_version' => 'v2.4', ]); $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // Optional permissions $loginUrl = $helper->getLoginUrl('', $permissions); echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>'; ?> fb-callback.php <?php session_start(); require ('facebook-php-sdk-v4-5.0.0/src/Facebook/autoload.php'); $fb = new Facebook\Facebook([ 'app_id' => '', 'app_secret' => '', 'default_graph_version' => 'v2.4', ]); $helper = $fb->getRedirectLoginHelper(); try { $accessToken = $helper->getAccessToken(); } catch(Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } if (! isset($accessToken)) { if ($helper->getError()) { header('HTTP/1.0 401 Unauthorized'); echo "Error: " . $helper->getError() . "\n"; echo "Error Code: " . $helper->getErrorCode() . "\n"; echo "Error Reason: " . $helper->getErrorReason() . "\n"; echo "Error Description: " . $helper->getErrorDescription() . "\n"; } else { header('HTTP/1.0 400 Bad Request'); echo 'Bad request'; } exit; } // Logged in echo '<h3>Access Token</h3>'; var_dump($accessToken->getValue()); // The OAuth 2.0 client handler helps us manage access tokens $oAuth2Client = $fb->getOAuth2Client(); // Get the access token metadata from /debug_token $tokenMetadata = $oAuth2Client->debugToken($accessToken); echo '<h3>Metadata</h3>'; var_dump($tokenMetadata); // Validation (these will throw FacebookSDKException's when they fail) $tokenMetadata->validateAppId($config['app_id']); // If you know the user ID this access token belongs to, you can validate it here // $tokenMetadata->validateUserId('123'); $tokenMetadata->validateExpiration(); if (! $accessToken->isLongLived()) { // Exchanges a short-lived access token for a long-lived one try { $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); } catch (Facebook\Exceptions\FacebookSDKException $e) { echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>"; exit; } echo '<h3>Long-lived</h3>'; var_dump($accessToken->getValue()); } $_SESSION['fb_access_token'] = (string) $accessToken; // User is logged in with a long-lived access token. // You can redirect them to a members-only page. // header('Location: https://example.com/members.php'); ?> thanks very much
  2. Hi all I have the following jquery $(document).find('.files li:visible:first').css('background','blue'); but it doesn't seem to work. Oddly if I remove 'visible' and use $(document).find('.other li:first').css('background','blue'); it works. How can I correct my issue as I really need it to apply the code to the first visible element Thanks
  3. dweb

    Prepared Array

    Thanks again. Going forward, is it better to use bindParam or bindValue
  4. dweb

    Prepared Array

    thanks i'll try that
  5. dweb

    Prepared Array

    Thanks, i'll give that a go. For code consitancy i'd tried to keep it similar to my other methods
  6. dweb

    Prepared Array

    Sure that makes perfect sense. But do you see no logical way to overcome this issue using the method i'm trying to? From what i've read online, when benchmarked tests were done, a single insert outperformed multiple inserts, so I figured it might be best to try and do it this way for performance reasons.
  7. Hi all I am trying to use a prepared statement to insert an array of users, my array is Array ( [0] => 1[1] => 4 [2] => 7 ) This works fine, and inserts no problem, but for some reason when it runs the following loop foreach($users as $user) { $stmt->bindParam(':user_id', $user_id, PDO::PARAM_STR); $stmt->bindParam(':no', $user, PDO::PARAM_STR); } it's using just 1 user record and duplicating it. So rather than inserting 3 records 1 4 7 it just inserts all 3 records with 7 The full code is $sql = 'INSERT INTO users (user_id, no) VALUES '; $i=0; $count = count($user_array); foreach($users as $user) { $i++; $sql .= "(:user_id,:no)"; if($i < $count) { $sql .= ","; } } $stmt = $conn->prepare($sql); foreach($users as $user) { $stmt->bindParam(':user_id', $user_id, PDO::PARAM_STR); $stmt->bindParam(':no', $user, PDO::PARAM_STR); } $stmt->execute(); any ideas? Is it because the bindParam's need a unqiue name in their loop? Thanks
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.