Error de Facebook SDK Durante el intento de inicio de sesión: no se establece URL -- php campo con curl campo con None camp Relacionados El problema

Facebook SDK error during login attempt: No URL set


16
vote

problema

Español

Estoy recibiendo el siguiente mensaje de error

Facebook SDK devolvió un error: ¡No se establece URL!

ERROR FATAL: UNCOTOCT Excepción 'Facebook excepciones FacebookSdKeXception' 'con mensaje' No Set de URL! ' en /membri/csslab/sdk/src/facebook/httpclients/facebookcurlhttpclient.php:83

STICK TRACE:

0 /membri/csslab/sdk/src/facebook/facebookclient.php(216): Facebook httpclients facebookcurlhttpclient- & gt; Enviar (' https: //graph.f ... ', 'Obtener', '', Array, 60)

1 /membri/csslab/sdk/src/facebook/authentication/oauth2client.php(277): Facebook FacebookClient- & GT; SendRequest (Objeto (Facebook FacebookRequest))

2 /membri/csslab/sdk/src/facebook/authentication/oauth2client.php(226): Facebook Autenticación OAUTH2CLIENTE- & GT; SENDREQUESTWITHCLIENTPARAMS ('/ OAUTH / ACCESS_T ...', Matriz)

3 /membri/csslab/sdk/src/facebook/authentication/oauth2client.php(166): Facebook Autenticación OAUTH2CLIENTE- & GT; SolicituAccessToken (Array)

4 /membri/csslab/sdk/src/facebook/Helpers/FacebookRedirectloginHelper.php(255): Facebook autenticación oauth2client- & gt; getaccesstokenfromcode ('aqaaf_xmnfr0c7i ...', ' http: //csslab.a ...')

5 /membri/csslab/login-callback.php(30): Facebook hel en /membri/csslab/sdk/src/facebook/httpclients/facebookcurlhttpclient.php en la línea 83

Al intentar iniciar sesión con las credenciales de Facebook.

Todo funciona bien en local. He configurado correctamente el dominio en la aplicación de Facebook.

El código que estoy usando es que sugerido por la documentación de Facebook:

  <?php // login-callback.php session_start();  function redirect($url, $permanent = false) {     if (headers_sent() === false) {         header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);     }     exit(); }  $path = ''; $uri = 'http://xxxxx.altervista.org'; require_once $path . 'sdk/src/Facebook/autoload.php';  $fb = new FacebookFacebook([     'app_id' => 'xxxxxxxxxxx',     'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxx',     'default_graph_version' => 'v2.5',     ]);  $helper = $fb->getRedirectLoginHelper();  try {      $accessToken = $helper->getAccessToken();  } catch(FacebookExceptionsFacebookResponseException $e) {     // When Graph returns an error     echo 'Graph returned an error: ' . $e->getMessage();     exit; } catch(FacebookExceptionsFacebookSDKException $e) {     // When validation fails or other local issues     echo 'Facebook SDK returned an error: ' . $e->getMessage();     exit; }  if (isset($accessToken)) {     // Logged in!     $_SESSION['facebook_access_token'] = (string) $accessToken;      // Now you can redirect to another page and use the     // access token from $_SESSION['facebook_access_token']     redirect($uri . 'survey.php?token='.$_SESSION['facebook_access_token'] ,   false); } elseif ($helper->getError()) {     // There was an error (user probably rejected the request)     echo '<p>Error: ' . $helper->getError();     echo '<p>Code: ' . $helper->getErrorCode();     echo '<p>Reason: ' . $helper->getErrorReason();     echo '<p>Description: ' . $helper->getErrorDescription();     exit; } ?>   

Actualización:

   public function send($url, $method, $body, array $headers, $timeOut) { $this->openConnection($url, $method, $body, $headers, $timeOut); $this->sendRequest();  if ($curlErrorCode = $this->facebookCurl->errno()) {     throw new FacebookSDKException($this->facebookCurl->error(), $curlErrorCode); }  // Separate the raw headers from the raw body list($rawHeaders, $rawBody) = $this->extractResponseHeadersAndBody();  $this->closeConnection();  return new GraphRawResponse($rawHeaders, $rawBody); }   
Original en ingles

I'm getting the following error message

Facebook SDK returned an error: No URL set!

Fatal error: Uncaught exception 'Facebook\Exceptions\FacebookSDKException' with message 'No URL set!' in /membri/csslab/sdk/src/Facebook/HttpClients/FacebookCurlHttpClient.php:83

Stack trace:

0 /membri/csslab/sdk/src/Facebook/FacebookClient.php(216): Facebook\HttpClients\FacebookCurlHttpClient->send('https://graph.f...', 'GET', '', Array, 60)

1 /membri/csslab/sdk/src/Facebook/Authentication/OAuth2Client.php(277): Facebook\FacebookClient->sendRequest(Object(Facebook\FacebookRequest))

2 /membri/csslab/sdk/src/Facebook/Authentication/OAuth2Client.php(226): Facebook\Authentication\OAuth2Client->sendRequestWithClientParams('/oauth/access_t...', Array)

3 /membri/csslab/sdk/src/Facebook/Authentication/OAuth2Client.php(166): Facebook\Authentication\OAuth2Client->requestAnAccessToken(Array)

4 /membri/csslab/sdk/src/Facebook/Helpers/FacebookRedirectLoginHelper.php(255): Facebook\Authentication\OAuth2Client->getAccessTokenFromCode('AQAAf_xMnFr0C7i...', 'http://csslab.a...')

5 /membri/csslab/login-callback.php(30): Facebook\Hel in /membri/csslab/sdk/src/Facebook/HttpClients/FacebookCurlHttpClient.php on line 83

when trying to login with Facebook credentials.

Everything works fine in local. I have properly set the domain in Facebook App.

The code I'm using is that suggested by Facebook's documentation:

<?php // login-callback.php session_start();  function redirect($url, $permanent = false) {     if (headers_sent() === false) {         header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);     }     exit(); }  $path = ''; $uri = 'http://xxxxx.altervista.org'; require_once $path . 'sdk/src/Facebook/autoload.php';  $fb = new Facebook\Facebook([     'app_id' => 'xxxxxxxxxxx',     'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxx',     'default_graph_version' => 'v2.5',     ]);  $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)) {     // Logged in!     $_SESSION['facebook_access_token'] = (string) $accessToken;      // Now you can redirect to another page and use the     // access token from $_SESSION['facebook_access_token']     redirect($uri . 'survey.php?token='.$_SESSION['facebook_access_token'] ,   false); } elseif ($helper->getError()) {     // There was an error (user probably rejected the request)     echo '<p>Error: ' . $helper->getError();     echo '<p>Code: ' . $helper->getErrorCode();     echo '<p>Reason: ' . $helper->getErrorReason();     echo '<p>Description: ' . $helper->getErrorDescription();     exit; } ?> 

UPDATE:

 public function send($url, $method, $body, array $headers, $timeOut) { $this->openConnection($url, $method, $body, $headers, $timeOut); $this->sendRequest();  if ($curlErrorCode = $this->facebookCurl->errno()) {     throw new FacebookSDKException($this->facebookCurl->error(), $curlErrorCode); }  // Separate the raw headers from the raw body list($rawHeaders, $rawBody) = $this->extractResponseHeadersAndBody();  $this->closeConnection();  return new GraphRawResponse($rawHeaders, $rawBody); } 
        
         
         

Lista de respuestas

0
 
vote

oauth ayuda a administrar los tokens de acceso que tiene que validarlos

  // 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({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();  if (! $accessToken->isLongLived()) {   // Exchanges a short-lived access token for a long-lived one   try {     $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);   } catch (FacebookExceptionsFacebookSDKException $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');   
 

OAuth helps to manage the access tokens you have to validate them

// 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({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();  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. // You can redirect them to a members-only page. //header('Location: https://example.com/members.php'); 
 
 
   
   
0
 
vote

No estoy seguro de si esto ayuda, pero puede usar un paquete para manejar el inicio de sesión social (FB, Twitter, Google, ...), es posible que desee ver este paquete de PHP League y usar su biblioteca en lugar de usar El Facebook SDK.

https://github.com/thepleague/oauth2-client

A veces cuando estás realmente atascado, ayuda a probar cosas de un ángulo diferente.

 

I'm not sure if this helps, but you can use a package to handle social login (fb, twitter, google, ...) you might want to look at this PHP League package and use their library instead of using the facebook SDK.

https://github.com/thephpleague/oauth2-client

Sometimes when you're really stuck, it helps to try things from a different angle.

 
 

Relacionados problema

0  Cómo combinar eficientemente miles de miles de subcadena en una cadena usando elasticsearch [cerrado]  ( How to efficiently match hundred thousands of substring in one string using elas ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

2  Servicestack.Dataannotations ¿Definiciones de atributos faltantes?  ( Servicestack dataannotations missing attributes definitions ) 
Estoy tratando de usar los decoradores de atributos de ServicStack desde ServicesEstack.Dataannotations, pero cuando veo el espacio de nombres de Servicestack...

28  ¿Cómo borrar el índice de elasticsearch?  ( How to erase elasticsearch index ) 
My unidad / prueba de integración incluye pruebas para la funcionalidad de búsqueda. Mi idea es tener un índice de búsqueda vacío antes de cada prueba. Po...

0  El uso de la función de automóviles de MADRICESTACK causa la autogeneración del error fallido WSDL  ( Using servicestack autoquery feature causes autogeneration of wsdl failed error ) 
Cuando habilito la función de autoquirería en el error de MADRICESTACK, obtengo un error [Route("/Data/ApplicationLog")] public class AutoQueryApplicationLog...

2  Aplicación de Android Daily ** Desinstala **, ¿cómo se calcula a partir de la consola de desarrollador?  ( Android app daily uninstalls how is it calculated from developer console ) 
¿Alguna idea de cómo Android Developer Console Figuras desinstalaciones diarias? Mi corazonada - a través de la falla de ping de GCM El servicio de Googl...

1  Mapas de Android V2 ofrecen servicio de juego  ( Android maps v2 offer play service ) 
Tengo el éxito de los mapas de Android para trabajar API V2, pero luego intenté probar si no tengo servicios de Google Play, se ofrecerá la aplicación para in...

0  Marcos rojos sobre los servicios de Google Play Lib en Eclipse  ( Red mark over google play services lib in eclipse ) 
He seguido a las guías de Sereval, copié la carpeta de la biblioteca en mi área de trabajo y luego lo importó en Eclipse, lo he limpiado una docena de veces y...

4  Ubicación fusionada a veces se detiene  ( Fused location sometimes stops ) 
He estado trabajando en una aplicación que rastrea la posición del usuario. Para esto, he usado el módulo de ubicación de los servicios de Google Play (a.k.a....

88  ¿Añadir la versión de Google Play Services al manifiesto de su aplicación?  ( Adding google play services version to your apps manifest ) 
Estoy siguiendo este tutorial: https://developers.google.com / Mapas / Documentación / Android / Inicio # Descripción general sobre cómo agregar Google Maps...

2  ¿Cómo representar una plantilla por nombre?  ( How to render a template by name ) 
Estoy tratando de obtener mi cabeza alrededor de SERVICESTACK AUTO-AUTHOTHED y la nueva API. Agregar dos vistas del mismo nombre en carpetas separadas res...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos