Facebook SDK PHP 5.0 getLoginUrl () Errore 500

Sto cercando di utilizzare gli esempi forniti in Facebook PHP SDK 5.0 per accedere a Facebook. Sto recuperando 500 errori interni del server. Sto usando Baby Plan da HostGator che esegue PHP PHP 5.5.27 INFO . C'è una configuration che avrei bisogno di aggiungere al mio server per far funzionare le cose?

login.php

<?php session_start(); // Include the required dependencies. require_once( 'vendor/autoload.php' ); // Initialize the Facebook PHP SDK v5. $fb = new Facebook\Facebook([ 'app_id' => '495994870548274', 'app_secret' => '593f18b375c9e23d34b9794136cf7158', 'default_graph_version' => 'v2.3', ]); $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // Optional permissions $loginUrl = $helper->getLoginUrl('http://techcomsgb.com/kidneytest/login-callback.php', $permissions); echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>' 

login-callback.php

 <?php session_start(); // Include the required dependencies. require_once( 'vendor/autoload.php' ); // Initialize the Facebook PHP SDK v5. $fb = new Facebook\Facebook([ 'app_id' => '495994870548274', 'app_secret' => '593f18b375c9e23d34b9794136cf7158', 'default_graph_version' => 'v2.3', ]); $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>\n\n"; 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. 

// Puoi reindirli a una pagina riservata ai membri. // header ('Location: https://example.com/members.php ');

Ho avuto anche questo errore. La maggior parte delle cose era nella parte di hosting . Ho risolto facendo alcune cose.

  1. Controlla la versione PHP di hosting 5.4 o successiva
  2. Controlla mbstring abilitato
  3. Imposta i valori mbstring nel php.ini

MBString Valori Immagine di esempio

Vedi di più: https://benmarshall.me/facebook-php-sdk/#requirements

Quindi, nel callback.php, Facebook Exceptions non funzionava, quindi lo cambio nel metodo di exception PHP come questo:

 try { $accessToken = $helper->getAccessToken(); } catch(Exception $e) { // There was an error communicating with Graph echo $e->getMessage(); exit; } 

Quindi ricevo il messaggio di errore. Era il time.timezone, l'ho aggiunto nel file php.ini e ora tutto funziona.

 [date] date.timezone = "America/Los_Angeles" 

Errore semplice, permessi file errati su login-callback.php

È perché ti sei dimenticato di inserire un app-id in questa sezione:

  // Validation (these will throw FacebookSDKException's when they fail) $tokenMetadata->validateAppId({app-id}); // Replace {app-id} with // your app id // If you know the user ID this access token belongs to, you can validate // it here //$tokenMetadata->validateUserId('123'); $tokenMetadata->validateExpiration(); 

Sostituisci {app-id} con il tuo ID e poi dovrebbe funzionare. Sono sorpreso che nessuno su Facebook ha sottolineato questo.

Per me è stato il collegamento restituito da $helper->getLoginUrl() , quindi ho appena sostituito https://www.facebook.com/v2.8/dialog/oauth con https://graph.facebook.com/oauth/ autorizzare .

  $login_url = $login_helper->getLoginUrl('www.yoururl.com/fb-callback.php'), $permissions); $login_url = str_replace('https://www.facebook.com/v2.8/dialog/oauth?', 'https://graph.facebook.com/oauth/authorize?', $login_url); 

Guarda questo post per riferimento Facebook oauth autorizza l'URL e le opzioni dei parametri

"quando vuoi build manualmente il stream di login dovresti usare / oauth / authorize .. else se stai utilizzando l'API di javascript / Apps fornita da facbook che usa / dialog / oauth"