2017-05-25 16 views
0

こんにちはみんな私はCakePHPとMVCの初心者でもありますが、私の古いクライアントの1人が私に挑戦してくれた好意を私に求めました。だから誰かが私を助けることができるなら、私は多くを感謝します。Facebook OAuth Issue with CakePHP 2.9

私はOAuthのが正常に動作し、次のされていないCakePHPの2.9アプリケーションは、アプリ/コントローラ/ UsersController.phpのコード

public function facebookLogin(){ 

    $this->layout = false; 

    App::import('Vendor', 'Facebook/facebook'); 
    /*$facebook = new Facebook(array(
            'appId' => '1867587306812489', // Facebook App ID 
            'secret' => '9fb41a07d3da3406dbab5861c3498764', // Facebook App Secret 
            'cookie' => false,  
           ) 
          ); */ 
    $facebook = new Facebook(array(
            'appId' => '1887387108164606', // Facebook App ID 
            'secret' => '8d733aa6a4501ce27fde9626429baab9', // Facebook App Secret 
            'cookie' => false,  
           ) 
          ); 
    $user = $facebook->getUser(); 
    if ($user) { 
     try { 
       $user_profile = $facebook->api('/me?fields=first_name,last_name,email'); 

     $usersArr = $this->User->find('first',array('conditions'=>array('User.email'=>$user_profile['email'],'User.social_id'=>$user_profile['id'],'User.role_id'=>0))); 


             $user_count = $this->User->find('first',array('conditions'=>array(),'order'=>'User.id DESC','limit'=>1)); 

       if(empty($usersArr)){ 

         $saveUserArr['User']['username'] = trim($user_profile['first_name']).' '.trim($user_profile['last_name']); 
         $saveUserArr['User']['firstname'] = $user_profile['first_name']; 

         $saveUserArr['User']['lastname'] = $user_profile['last_name']; 

                /* $user_n = $saveUserArr['User']['first_name'].'.'.$saveUserArr['User']['last_name']; 
         $user_cnt = $user_count['User']['id'] + 1; 
         $user_n = str_replace(' ','_',$user_n).'.'.$user_cnt; 
         $saveUserArr['User']['user_unique_id'] = $user_n; */ 

         $saveUserArr['User']['email'] =  $user_profile['email']; 

         $saveUserArr['User']['password'] = '123456'; 

         $saveUserArr['User']['social_id'] = $user_profile['id']; 

         $saveUserArr['User']['login_from'] = 'facebook'; 

         $saveUserArr['User']['role_id'] = 0; 

         $this->User->save($saveUserArr['User'],false); 

       }else{ 

        $this->User->id = $usersArr['User']['id']; 

        $this->User->saveField('social_id', $user_profile['id']); 

        $this->User->saveField('login_from', 'facebook'); 

       } 

      $this->request->data['User']['email'] = $user_profile['email']; 

      $this->request->data['User']['login_from'] = 'facebook';  

      } catch (FacebookApiException $e) { 

      error_log($e); 

      $user = null; 

      } 

    } else { 

    $loginUrl = $facebook->getLoginUrl(array(

      'scope'  => 'email', // Permissions to request from the user 

      )); 

    return $this->redirect($loginUrl); 
    }      
} 

private function deleteFacebookSession(){ 

    Configure::write('debug', 0); 

    if(!$this->Session->check('Auth.User')){ 

     foreach($this->Session->read() as $key => $value) { 

      if(strpos($key, 'fb_') === 0) { 

       $this->Session->delete($key); 

      } 
     } 
    } 
} 

です。これは、次のエラーをスローします: enter image description here

+1

「テストアプリケーションを作成」と呼ばれていますあなたはエラーをグーグルで試しましたか?それは問題が何であるかをかなり説明しています。 – drmonkeyninja

+0

スタックオーバーフローから多くのソリューションを試してみました。 –

答えて

0

のOAuthスクリプトURL fbアプリで正しく設定されていません。 あなたはfbアプリの設定に行き、APP DOMAINを探します。

があなたのドメインを含める:

facebook app domain input

あなたがローカルホストで開発している場合は、server.localとしてあなたのLocalServerにアクセスできるように、あなたはあなたのhostsファイルにserver.local RECを作成することもできます。

また、あなたがメインFBアプリのテスト版を作成することができますし、あなたが他の環境で動作し、あなたのFBアプリのコピーを持つことができ、

Facebook create test app dialog

+0

はい、それが見逃されましたが、このエラーが表示されます。「エラーが多すぎます」http://prntscr.com/fcdot9 –

+0

明らかに、else文が入力されています。 if($ user)を置く前にvar_dump($ user); die();あなたはFacebookから何を得ているのか見てみましょう。 –

+0

修正方法の詳細を教えていただけますか?あなたが何を意味しているのかわかりません –