2017-04-06 1 views
1

이것은 내 컨트롤러이며 정상적으로 작동합니다. 크로스 사이트 요청 위조 검증에 실패했습니다 Codeigniter를 사용하여 Facebook 로그인 하시겠습니까?

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Welcome extends CI_Controller { 


    public function __construct(){ 
     parent::__construct(); 
     $this->load->library('session'); 
    } 

    function index(){ 
     $this->load->view("welcome_message"); 
    } 

    function fblogin(){ 

    $fb = new Facebook\Facebook([ 
      'app_id' => '213234637467346734', 
      'app_secret' => '7346762476374673647', 
      'default_graph_version' => 'v2.8', 
     ]); 

    $helper = $fb->getRedirectLoginHelper(); 

    $permissions = ['email','user_location','user_birthday','publish_actions']; 
// For more permissions like user location etc you need to send your application for review 

    $loginUrl = $helper->getLoginUrl('http://localhost/facebooklogin/welcome/fbcallback', $permissions); 

    header("location: ".$loginUrl); 

} 
function fbcallback(){ 

     $fb = new Facebook\Facebook([ 
     'app_id' => '1767865763452676', 
     'app_secret' => '2454f5b88ea788b407297f39400b796b', 
     'default_graph_version' => 'v2.5', 
     ]); 

     $helper = $fb->getRedirectLoginHelper(); 
     $this->session->set_userdata('state',$_GET['state']); 

     try { 

      $accessToken = $helper->getAccessToken(); 

     }catch(Facebook\Exceptions\FacebookResponseException $e) { 
      // When Graph returns an error 
      echo 'Graph returned an error: ' . $e->getMessage(); 
      exit; 
     } catch(Facebook\Exceptions\FacebookSDKException $e) { 
      // When validation fails or other local issues 
      echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
      exit; 
     } 


     try { 
      // Get the Facebook\GraphNodes\GraphUser object for the current user. 
      // If you provided a 'default_access_token', the '{access-token}' is optional. 
      $response = $fb->get('/me?fields=id,name,email,first_name,last_name,birthday,location,gender', $accessToken); 
     // print_r($response); 
     } catch(Facebook\Exceptions\FacebookResponseException $e) { 
      // When Graph returns an error 
      echo 'ERROR: Graph ' . $e->getMessage(); 
      exit; 
     } catch(Facebook\Exceptions\FacebookSDKException $e) { 
      // When validation fails or other local issues 
      echo 'ERROR: validation fails ' . $e->getMessage(); 
      exit; 
     } 

     // User Information Retrieval begins................................................ 
     $data['me'] = $response->getGraphUser(); 
     $data['accessToken'] =$accessToken; 

     $this->load->view("home",$data); 


    } 


} 

나는 그것의 나에게 페이스 북 SDK에서 오류를 반환이 오류를 줄이 홈 페이지를 새로 고침

. 필수 매개 변수 "상태"가 영구 데이터에서 누락되었습니다. 여기 나는 나 또한 내가 문제 야 그냥 내가 액세스 토큰을 얻을 try 블록에 코드를 추가 해결이

답변

1

autload 파일에서 세션 라이브러리를로드 보안 reason.and의 APP_ID 및 app_secret을 변경

if(!$this->session->userdata('token')){ 
      $accessToken = $helper->getAccessToken(); 
      $this->session->set_userdata('token',$accessToken); 
      } 
      else{ 
      $accessToken = $this->session->userdata('token'); 
      } 
관련 문제