2016-05-31 3 views
0

기본 Facebook 로그인 버튼을 설정하려고합니다. , 유일한 차이가 나는 하나 개의 파일에 설정 모든 것을 시도하고있다 https://developers.facebook.com/docs/php/howto/example_facebook_login올바른 페이스 북 PHP SDK 로그인 경로

(그래서 한 자리에서 코드에 로그인하는 모든 사회를 유지할 수) :

이 내가 복사하고있어 기본적으로 링크를 만들고 사용자를 모두 리디렉션하기를 바라고 있습니다.

처리기에서 생성 한 페이지를 클릭하면 "죄송합니다.이 페이지를 사용할 수 없습니다."라는 메시지가 나타납니다.

트위터 흐름은 기본적으로 동일합니다 (문제없이 완벽하게 작동합니다). oauth 토큰을 데이터베이스에 저장합니다. 아직까지는 페이스 북 부분을 아직 수행하지 않았습니다. 그것은 저장 테이블을 저장합니다, 그냥 토큰과 함께 oauth 공급자 또는 무언가를 저장합니다.

switch(strtolower($_REQUEST['method'])) {  
case 'twitter': 
    /*ommited, but it's basically the same flow*/ 
    break; 

case 'facebook': 
    // if we don't have a step, we don't know what to do 
    if (!isset($_REQUEST['step'])) { 
     die('Fail: invalid step: (none)'); 
    } 

    // we'll be using the Facebook PHP SDK 
    require(FACEBOOK_SDK_PATH); 

    switch(strtolower($_REQUEST['step'])) { 
     case 1: 
      // instantiates a new SDK App object 
      $fb = new Facebook\Facebook([ 
       'app_id' => FACEBOOK_APP_ID, 
       'app_secret' => FACEBOOK_APP_SECRET, 
       'default_graph_version' => '2.0' 
      ]); 

      // gets helper 
      $helper = $fb->getRedirectLoginHelper(); 

      // optional permissions parameter 
      // we want the users email address 
      $permissions = ['email']; 

      // generates the url for the user to authorize access 
      $loginUrl = $helper->getLoginUrl('http://localhost/social-login.php?method=facebook&step=2', $permissions); 

      // redirect user 
      header('Location: ' . $loginUrl); 

      break; 

     case 2: 
      // this should include an access token so we can get information about the user and consider them authenticated 
      echo '<pre>'; 
      var_dump($_SESSION); 
      var_dump($_REQUEST); 
      echo '</pre>'; 
      die(); 

      break; 

     default: 
      die('Fail: invalid step: ' . $_REQUEST['step']); 
    } 
    break; 

default: 
    die('Fail: invalid method . ' . $_REQUEST['method']); 
} 

나는 위의 문서 부어했습니다 그냥 실종 알아낼 수 없습니다

여기에 요점입니다. 앱 측의 설정 일 수 있습니까? localhost 콜백 문제가 있습니까?

앱이 (2.0)으로 설정되면 무엇이든 기본값 그래프 버전과 일치했습니다. 나는 내가 그것을 바꿀 수 있는지 모르겠다. 2.2와 2.5를 사용하는 많은 코드를 보았고, 그것이 내 이슈의 일부가 될 수 있는지를 알 수 없다. 나는 추측하지 않을 것이다. 그러나 나는 여기에 메모를 남길 것이라고 생각했다.

+0

- 어디에서 :

당신은 v을 포함해야합니까? 앱에서 명시 적으로 출력하는 메시지입니까? 또는 브라우저의 기본 오류 페이지를 참조하고 있습니까? 브라우저의 dev 도구 네트워크 패널에서 무슨 일이 일어나고 있는지 확인하십시오. 거기에 500이나 다른 서버 측 오류가 있습니까? 서버의 로그 파일을 확인하십시오. – CBroe

+0

@CBroe SDK에서 생성 한 URL로 리디렉션 할 때 표시되는 메시지입니다. http://i.imgur.com/XWhpDpb.png – Jeff

답변

2
$fb = new Facebook\Facebook([ 
    'app_id' => FACEBOOK_APP_ID, 
    'app_secret' => FACEBOOK_APP_SECRET, 
    'default_graph_version' => '2.0' 
]); 

API 버전을 잘못 지정 했으므로 SDK에서 잘못된 로그인 대화 상자 URL을 만들었습니다. _ 죄송이 페이지 가능 "메시지가"아니다 "나는 얻을"_

'default_graph_version' => 'v2.0' 
+0

완벽한, 고마워! – Jeff