Facebook connect- $ user_id = $ facebook-> getUser (); siempre regresando 0

Antes de decir algo, quiero decir que llegué a GOOGLEd mucho y que se encontraron muchas páginas (incluidas muchas de las preguntas) con diferentes soluciones … pero las probé una a una, pero desafortunadamente ninguna funcionó. para mi

con facebookphp-sdk estoy intentando iniciar sesión con un usuario. en las primeras ocasiones funcionaba perfectamente bien (hace 2 o 3 días) . Hoy, cuando comencé a trabajar de nuevo con mi proyecto, ya no funciona. Siempre que bash ingresar, un usuario $facebook->getUser() is returning 0 .Buts 3 días atrás estaba funcionando.

He utilizado el código que se proporciona aquí :: developers.facebook.com y sí, he realizado algunos cambios, que se proporcionan con el código completo a continuación.

MI CÓDIGO :: 0auth_provided_by_facebook.php

 include_once $_SERVER['DOCUMENT_ROOT'].'dist/facebook-php-sdk/src/facebook.php'; $config = array( 'appId' => '***********', 'secret' => '*********', 'allowSignedRequest' => false, // optional but should be set to false for non-canvas apps 'cookie' => true, 'oauth' => true ); $facebook = new Facebook($config); $user_id = $facebook->getUser(); if($user_id) { try { $user_profile = $facebook->api('/me','GET'); } catch(FacebookApiException $e) { $login_url = $facebook->getLoginUrl(array( scope'=>'email,user_location,user_photos,publish_actions,publish_stream,basic_info', 'redirect_uri' => 'http://localhost/dist/include/0auth_provided_by_facebook.php' )); echo ' PLEASE CLICK HERE '; error_log($e->getType()); error_log($e->getMessage()); } } else { $login_url = $facebook->getLoginUrl(array( 'scope' => 'email,user_location,user_photos,publish_actions,publish_stream,basic_info', 'redirect_uri' => 'http://localhost/dist/include/0auth_provided_by_facebook.php' )); echo ' PLEASE CLICK HERE '; } 

SALIDA: getUser () siempre devuelve 0.


cómo funciona mi proceso de inicio de sesión descrito a continuación:

Después de hacer clic en Login using fb control va a mi Login using fb localhost/dist/index.php Ahora mi index.php include el código wriiten que se encuentra en el directorio localhost/dist/include/0auth_provided_by_facebook.php desde este archivo lo manejo todo. si el inicio de sesión es exitoso y falla, Facebook devuelve valor aquí. Luego, al iniciar sesión correctamente, el usuario vuelve a ser redirigido a su hogar.


Ahora aquí está la lista completa de la configuración de mi aplicación que habilité o deshabilité o cambié

  1. App Domains : blank(according to the answer) 2. Site URL : `http://localhost/dist/include/0auth_provided_by_facebook.php?` 3. Native or desktop app? Disabled 4. Deauthorize Callback URL : `http://localhost/dist/include/0auth_provided_by_facebook.php?` 5. Social Discovery : enabled 6. Client OAuth Login : enabled 7. Embedded browser OAuth Login :enabled 8. App Secret Proof for Server API calls :enabled 9. Require 2-factor reauthorization : disabled 10. Valid OAuth redirect URIs :`http://localhost/dist/include/0auth_provided_by_facebook.php?` (according to the suggesion given in the answer) 11. Stream post URL security : enabled 

estos fueron los detalles. $user_id = $facebook-> getUser(); siempre devuelve 0 en todas las condiciones. ¿Cómo puedo resolverlo?


para obtener más información … aunque no sé, eso no te ayudará … Estaba revisando mi base_facebook.php y descubrí que devuelve cero porque if(signed_request) siempre es falso.

Para deshacerse de este problema, debe hacer lo siguiente

Cambio

 $login_url = $facebook->getLoginUrl(array( 'scope' => 'email,user_location,user_photos,publish_actions,basic_info', 'redirect_uri' => 'http://localhost/dist/' )); 

a

 $login_url = $facebook->getLoginUrl(array( 'scope' => 'email,user_location,user_photos,publish_actions,basic_info', 'redirect_uri' => 'http://localhost/dist/index.php' )); 

Deje el nombre de dominio en blanco en la siguiente configuración. No le des a localhost.com

 App Domains : localhost.com 

Entonces

 Valid OAuth redirect URIs :http://localhost/dist/ 

a

 Valid OAuth redirect URIs :`http://localhost/dist/index.php 

Ahora intenta allí después.

cambie el secreto de su aplicación de la página de configuración de la aplicación. Luego, use esta nueva aplicación secreta en la página anterior que ha mencionado. Borre todas las cookies en el navegador e intente cargar la página para obtener la respuesta correcta.

para mí suena un problema de host local si puedes usar un dominio para probar tu código. Tengo un sistema de inicio de sesión de una página ejecutándose en mi sitio web. Puedo enviarte todo el código sin importar cómo se vea tu código.

Edite la biblioteca base_facebook.php y reemplace la función getCode() existente con

 protected function getCode() { $server_info = array_merge($_GET, $_POST, $_COOKIE); if (isset($server_info['code'])) { if ($this->state !== null && isset($server_info['state']) && $this->state === $server_info['state']) { $this->state = null; $this->clearPersistentData('state'); return $server_info['code']; } else { self::errorLog('CSRF state token does not match one provided.'); return false; } } return false; }