2

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

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

这是组件中的user功能connect.php

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

和我的beforeFacebookSave()功能app_controller

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;

}    

谢谢 !

4

2 回答 2

4

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

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

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

于 2012-12-01T19:47:02.910 回答
0

试试这个,它对我有用

$infos = $facebook->api('/me?fields=id,first_name,last_name,picture,email');
于 2016-11-26T15:29:32.200 回答