Facebook getUser() 返回 0 [重复]

Posted

技术标签:

【中文标题】Facebook getUser() 返回 0 [重复]【英文标题】:Facebook getUser() returns 0 [duplicate] 【发布时间】:2012-01-30 01:28:31 【问题描述】:

我正在使用 php SDK 和 Codeigniter 实现 Facebook 登录。我得到 Facebook 登录弹出窗口,点击登录,但我无法检索用户的 id - 它总是返回 0。

我已将 facebook.php 和 base_facebook.php 文件放入我的库文件中,并按照教程 here 将其作为库包含在 Codeigniter 中。

谁能告诉我他们的想法?我正在使用以下代码 -

查看 - Facebook 登录按钮

  <div id="fb-root"></div>
  <script>
    window.fbAsyncInit = function() 
      FB.init(
        appId      : '<?php echo $this->config->item('facebook_app_id'); ?>',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true,
      );

          FB.Event.subscribe('auth.login', function() 
            window.location='<?php echo base_url(); ?>auth_other/fb_signin/';
          );

    ;
    (function(d)
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) return;
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     (document));

  </script>
  <div class="fb-login-button">Login with Facebook</div>

控制器 - auth_other/fb_signin

    function fb_signin()
               
        $fb_user = null;

        $fb_config = array(
        'appId'  => $this->config->item('facebook_app_id'),
        'secret' => $this->config->item('facebook_app_secret')
        );

        $this->load->library('facebook',$fb_config);

        $fb_user = $this->facebook->getUser();


        echo $fb_user;

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,这里有一个可以帮助你的解决方案。

$facebook = new Facebook(array(
  'appId'  => 'xxxx',
  'secret' => 'xxxxx',
  "redirect_uri" => "set the uri to point to the same page"
 ));

$user = $facebook->getUser();

if($user)

//your task
 else 
header('location:'. $facebook->getLoginUrl());



$user = $facebook->getUser();

if($user)

//your task
 else 
header('location:'. $facebook->getLoginUrl());

【讨论】:

上面的代码解释是,如果getUser()返回0,那么我们需要用$facebook->getLoginUrl()重定向到用户将接受应用程序并获得权限的页面,然后getUser如果用户接受, () 将起作用,否则您将再次获得 0。ù【参考方案2】:

我有同样的问题,经过很长时间试图找出问题所在, 我发现您需要访问令牌才能获取用户 ID。 要从 signed_request 中获取访问令牌,用户必须首先授权(以获取权限)您的应用。 我希望这会有所帮助

【讨论】:

【参考方案3】:

我遇到过类似的问题。我使用了一个示例项目,但无法弄清楚为什么它一直返回 0。在这里尝试了几乎所有相关链接,但没有一个解决它。

解决方案是在示例项目中更新 Facebook 的 SDK 文件。 简单又容易错过,

【讨论】:

【参考方案4】:

遇到了 getUser() 在不应该返回 0 的情况下,应用程序仍处于沙盒状态。原来用户没有接受成为应用程序开发者的请求。

【讨论】:

【参考方案5】:

如果App域是真实域但站点url是localhost,getUser函数返回0

【讨论】:

不正确,如果您将画布 url 指定为“localhost/my-great-app”并且在应用程序域“localhost”下,上述内容即使在 localhost 下也有效

以上是关于Facebook getUser() 返回 0 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Facebook PHP SDK getUser 总是返回 0?

如何清除 Facebook App 对象的数据

检查用户是否喜欢页面| PHP | Facebook

如果在 User.Identity.IsAuthenticated 为 false 时提供两个条件,GetUser(string userName, bool isOnline) 是不是仍返回 nul

await 函数不返回值

Auth0 规则 - 从 getUser() 读取元数据