2

Cakephp 1.3 Web サイトにはWebtechnick Facebook プラグインを使用しています。約1年前に実施しました。そして、それは今までうまくいきました。しかし、今日、(新しいユーザーとして)ログインしようとすると、Facebookのユーザーデータが保存されないことがわかりました。これは、($this->Connect->user()から取得された結果)が何も返さないためです。別のcakephp 2.0 Webサイトでこのfacebookプラグインも試しましたが、同じことがありました。$this->FB->api('/me')/plugins/facebook/controller/components/connect.php, line 194

私は、その結果をもたらす可能性のあるウェブサイトにまったく変更を加えていないため、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には反映されていませんでした(古い証明書を使用していたため)。プラグインはPHPSDKに基づいているため、リポジトリの最新バージョンhttps://github.com/webtechnick/CakePHP-Facebook-Pluginを取得する必要があります。作成者は、新しい証明書に新しいPHPSDKを含めるようにコミットをプッシュしました。

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

/meAPI呼び出しをチョークして空を返すSSLの問題により、エラーログにFacebook例外が表示されるはずです。

于 2012-12-01T19:47:02.910 に答える