【问题标题】:cakephp facebook api, FB->api('/me') returns empty valuecakephp facebook api, FB->api('/me') 返回空值
【发布时间】:2012-12-01 19:18:46
【问题描述】:

我将 Webtechnick Facebook plugin 用于 cakephp 1.3 网站。我大约一年前实施了它。直到现在它工作得很好。但是今天我发现当我尝试登录(作为新用户)时,它不会保存 facebook 用户数据,因为$this->Connect->user()(结果来自$this->FB->api('/me')/plugins/facebook/controller/components/connect.php, line 194)什么都不返回。我也试过,this facebook plugin 在另一个 cakephp 2.0 网站上,但同样的东西在那里。

我认为,facebook api 发生了一些变化,因为我绝对没有对网站进行任何更改,这可能会带来这样的结果。

这是connect.php 组件中的user 函数

function user($field = null){       
    if(isset($this->uid)){
        $this->uid = $this->uid;
        if($this->Controller->Session->read('FB.Me') == null){
            $this->Controller->Session->write('FB.Me', $this->FB->api('/me'));
        }
        $this->me = $this->Controller->Session->read('FB.Me');

    } 
    else {
        $this->Controller->Session->delete('FB');
    }

    if(!$this->me){
        return null;
    }

    if($field){
        $retval = Set::extract("/$field", $this->me);
        return empty($retval) ? null : $retval[0];
    }

    return $this->me;
}

还有我在app_controller中的beforeFacebookSave()函数

public function beforeFacebookSave() {
    $fbUser = $this->Connect->user ();


           //debug($fbUser);  // outputs nothing


        $this->Connect->authUser ['User'] ['email'] = $fbUser ['email'];        
        $this->Connect->authUser ['User'] ['first_name'] = $fbUser ['first_name'];
        $this->Connect->authUser ['User'] ['last_name'] = $fbUser ['last_name'];

            return true;

}    

谢谢!

【问题讨论】:

    标签: facebook cakephp cakephp-1.3 cakephp-2.0


    【解决方案1】:

    Facebook 上的证书更改未反映在 SDK 中(因为它使用了旧证书)。由于该插件基于 PHP SDK,您只需获取最新版本的 repo https://github.com/webtechnick/CakePHP-Facebook-Plugin。作者已推送提交以将新的 PHP SDK 包含在新证书中。

    https://github.com/webtechnick/CakePHP-Facebook-Plugin/tree/master/Vendor

    由于 SSL 问题导致 API 调用阻塞导致 /me 返回空,您的错误日志应该有 Facebook 异常。

    【讨论】:

    • 非常感谢phwd,就是这样!我更改了供应商的文件夹,两个版本都可以正常工作。谢谢!!
    • 嗨约翰,我在我的一个 CakePHP 1.3 网站上遇到了类似的问题。你能更详细地描述一下你是如何让它工作的吗?我试图从 webtechnick 的 master 分支更新证书甚至 PHP SDK 文件的其余部分,但运气不佳。非常感谢您提供的任何具体步骤/说明,谢谢!
    • 嗨,我和jesal有同样的问题,任何人都可以帮助我。我们必须为此做些什么?
    【解决方案2】:

    试试这个,它对我有用

    $infos = $facebook->api('/me?fields=id,first_name,last_name,picture,email');
    

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多