1

FB 로그인 버튼을 사용하여 사용자가 로그인 할 수 있도록했습니다. FB 로그인 버튼을 클릭하면 php가 세션을 시작할 수 있도록 fb_redirect.php라는 파일로 사용자가 리디렉션됩니다. fb_redirect 파일에서 Facebook API가 액세스 토큰을 가져 오지 못합니다.

window.fbAsyncInit = function() 
{ 
    FB.init({ 
     appId: '12345', 
     status: true, 
     cookie: true, 
     xfbml: true 
    }); 
    FB.Event.subscribe('auth.login', function(response) 
    { 
     window.location = '/fb_redirect.php'; 
    }); 
}; 

, 나는 다음과 같은 한 : 파일에 일이 무엇

session_start(); 
require("model/facebook_api/src/facebook.php"); 

$facebook = new Facebook(array(
    'appId' => '12345', 
    'secret' => '12345' 
)); 

$access_token = $facebook->getAccessToken(); 
$facebook->setAccessToken($access_token); 

if($access_token != "") 
{ 
    $user = $facebook->getUser(); 

    if($user != 0) 
    { 
     $user_profile = $facebook->api("/".$user); 
     $fb_id = $user_profile['id']; 
     $fb_first_name = $user_profile['first_name']; 
     $fb_last_name = $user_profile['last_name']; 
     $fb_email = $user_profile['email']; 

     $_SESSION['login'] = "true"; 
    } 
} 

header("Location:index.php"); 

종류의 혼란이다. 그것은 정말 맞았거나 놓쳤습니다. 이미 FB에 로그인 한 상태에서 FB 로그인 버튼으로 내 사이트에 로그인하려고하면 화면이 나타나서 빨리 사라집니다. 그러나, 그것은 내 사이트에 로그인하지 않습니다.

FB에 로그인하지 않고 내 사이트에 로그인하려고하면 화면이 나타나서 FB에 로그인하라는 메시지가 나타납니다. 팝업 화면에서 FB에 성공적으로 로그인하면 리디렉션이 발생합니다. 그러나 그럴 때 유효한 액세스 토큰이 필요하다는 오류 메시지가 나타납니다. 다른 경우에는 세션을 설정하지 않고 홈 페이지로 리디렉션됩니다. 그래서, 저는 액세스 토큰이 전혀 설정되지 않았다고 추측합니다.

나는 액세스 토큰을 수동으로 설정해야 할 수도 있다는 것을 읽었습니다. 그래서 시도해 보았습니다.

$facebook->setAccessToken($access_token); 

하지만 작동하지 않았습니다.

나는 이것을 이해하는 방법을 모르겠다. 어떤 아이디어?

답변

1

도움이되는지 모르겠으니 (FB SDK는 매우 다재다능하기 때문에) FB 지침은 사용자가 액세스 토큰을 얻기 전에 사용자를 확보하는 데 도움이됩니다. 어쩌면 (그냥 이론) 이미 로그인 한 상태에서 getUser() 메소드를 실행할 때까지 액세스 토큰을 $ facebook 객체에 사용할 수 없습니다 ... 액세스 가능성을 추측 할 수있는 이유는 추측됩니다. 토큰.