facebook connect- $ user_id = $ facebook-> getUser(); 总是返回0

之前我说我想说的是,我GOOGLEd了很多,有很多页面发现(包括很多这样的问题)与各种解决scheme…但我已经尝试了他们每个人,但不幸的是他们都没有工作为了我

用facebook-php-sdk我正在尝试login一个用户。 最初几次它工作得很好(2到3天前)今天,当我开始再次与我的项目工作,不再工作 。每当我想login一个用户$facebook->getUser() is returning 0 .Buts 3天后它工作。

我已经使用这里给出的代码:: developers.facebook.com是的,我已经做了一些改变,下面给出了完整的代码

我的代码:: 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 '<a href="' . $login_url .'"> PLEASE CLICK HERE </a>'; 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 '<a href="' . $login_url .'"> PLEASE CLICK HERE </a>'; } 

OUTPUT:getUser()总是返回0。


我的login过程如何工作如下:

点击<a href="login_fb">Login using fb </a>控制后,我的localhost/dist/index.php现在我的index.php include上面的wriiten代码,它位于不同的目录localhost/dist/include/0auth_provided_by_facebook.php从这个文件我处理一切。 成功和失败loginFacebook返回值here.and然后成功login用户再次被redirect到家


现在,他是我的应用程序设置,我启用或禁用或更改的完整列表

  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 

这些是细节。 $user_id = $facebook-> getUser(); 总是返回0 。 我怎么解决它?


更多的信息.​​.虽然我不知道它会帮助你不…我正在经历我的base_facebook.php,我发现它返回零,因为if(signed_request)总是假的。

要摆脱此问题,您需要执行以下操作

更改

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

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

在以下设置中将域名留空。 不要给localhost.com

 App Domains : localhost.com 

然后

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

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

现在尝试后。

从应用程序configuration页面更改您的应用程序的秘密。然后使用这个新的应用程序的秘密,你已经提到的上述页面。删除浏览器中的所有cookie,并尝试加载页面,你会得到正确的答复。

对我来说,这听起来是本地主机的问题,如果你可以使用一个域来testing你的代码我有一个页面login系统在我的网站上运行我可以给你所有的代码如何,你的代码看起来不错。

编辑base_facebook.php库并replace现有的getCode getCode()函数

 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; }