2017-05-25 49 views
0

嗨,夥計們首先讓我告訴你們,我也是CakePHP和MVC的新手,但我的老客戶之一請我給我一些好處,我作爲一個挑戰。所以如果任何人都可以幫助我,我會很感激。Facebook的OAuth問題與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

你有沒有試過用google搜索錯誤?它看起來很好描述了這個問題。 – drmonkeyninja

+0

從堆棧溢出嘗試/測試了許多解決方案 –

回答

0

基於OAuth的認證碼網址沒有在您的fb應用程序中正確配置。 您可以轉至您的fb應用程序設置並查找APP DOMAIN。

包含有您的域名:

facebook app domain input

如果你在你的本地主機開發,你可能要創建一個server.local REC在Hosts文件,以便您可以訪問您的LocalServer作爲server.local 。

此外,您還可以創建主FB應用程序的測試版本,並允許你有你的FB的應用程序,在其他環境中工作的副本,它被稱爲「創造的測試應用程序」

Facebook create test app dialog

+0

是的錯過了,但現在我看到這個錯誤「Error too many redirects」http://prntscr.com/fcdot9 –

+0

顯然它正在進入else語句。在if($ user)之前放置一個var_dump($ user); die();並看看你從Facebook獲得什麼。 –

+0

你可以給我更多的細節如何解決這個問題嗎?我不確定你的意思 –