2013-02-26 4 views
1

페이 스북 로그인을 통해 쿠키를 활성화하려고하므로 항상 세션에 의존하지만 항상 sharedSession을 설정하면 "페이지 isn '제대로 리디렉션 중입니다.'오류 페이지 .. 페이스 북 로그인에서 쿠키를 사용하도록하는 방법입니까? 페이스 북 SDK에 github의 최신 코드를 사용하고 있습니다. (오늘 freshy 다운로드) ->https://github.com/facebook/facebook-php-sdkfacebooks sharedSession이 "페이지가 제대로 리디렉션되지 않습니다."

자바 스크립트 SDK를 사용하고 있지 않습니다. 헤더를 보내기 전에 아래의 모든 코딩이 시작됩니다. sharedSession을 꺼내면 올바르게 로그인되지만, 필요한 정보가 들어있는 쿠키가 저장되지 않습니다.

는 Heres는 내가

$facebook = new Facebook(array(
    'appId' => $Sets['facebook']['appId'], 
    'secret' => $Sets['facebook']['appSecret'], 
'sharedSession' => true, 
// 'trustForwarded' => true 
)); 
$user = $facebook->getUser(); 
if($user){ 
    try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     $user = null; 
    } 
} 
// the user is logged into facebook 
if($user){ 
    // I register them on my website.. 
    // and then send them to the index page 
    header('Location: /index.php'); 
} else { 
    // they are not registered through facebook 
    if(isset($_GET['error'])){ 
      // this happens when an error is found 
     die($_GET['error'].' error'); 
//  header("Location: /login/?error=".urlencode($_GET['error'])); 
     exit; 
    } else { 
      // send to facebook to log them in. 
     $loginUrl = $facebook->getLoginUrl($Sets['facebook']['scope_array']); 
//  die('sending to '.$loginUrl); 
     header("Location: ".$loginUrl); 
     exit; 
    } 
} 

을 사용하고 당신은 내가 거기에 어떤 리디렉션하기 전에 die() 기능을 넣어 볼 수있는 코딩이, 나는 그것을 밖으로 실패 된 곳 알아낼 수 있는지 나의 말에 디버깅했다 하지만 그것은 사용자가 웹 사이트에 반환 된 후 일어나는 것 .. 나는 또한 trustForward => 사실, 시도했지만 그게 그것을 고칠 수 없다 ..

나는 모든 사용자가 로그인 할 수있게됩니다. 웹 사이트를 방문 할 때마다 페이스 북을 통해 로그인 할 필요없이 더 오랜 기간 동안.

사용자가 확인되지 않아서 페이스 북과 내 웹 사이트간에 리디렉션되는 페이스 북에 로그인하려는 루프에 사용자가 갇혀 있습니다. 다시 말하지만, 내가 설정할 때만이 일이 발생합니다. 'sharedSession' => true

로그인을 시도하지만 쿠키가 설정되지 않은 사람의 컴퓨터에 내 웹 사이트의 쿠키를 저장하려고합니다.

답변

0

질문에 혼란 스럽습니다. 달성하고자하는 것은 무엇입니까?

1) 페이스 북의 user_id를 쿠키로 저장하려면 아무 것도 할 필요가 없습니다. 당신의 "redirect_uri"URL로 페이스 북 리다이렉트가 완료되면, fbsr_xxxx (xxxx는 당신의 appId 임)

2) 더 오랜 시간 동안 사용자 로그인을 유지하려면, 사용자가 로그인했는지 여부를 결정하기 위해 자체 세션 값을 설정해야합니다. 즉, 페이스 북의 oauth 플로우 후에, 사용자 로그인 상태는 페이스 북 세션과 관련이 없습니다.

BTW : $ Users-> loginWithOauth,이 함수에는 정의가 없습니다.이 함수는 무엇입니까?

+0

나는 1) 페이스 북 쿠키를 설정하려고하고있다. 위의 코드를 사용하여 내 스크립트에서 사용자가 로그인 할 때 쿠키가 설정되지 않습니다. github에서 facebook php sdk의 최신 버전을 사용하고 있습니다. 그리고'$ Users-> loginWithOauth'는 사용자를 등록하는 내 스크립트입니다 .. – Yohn

+0

oauth 프로세스는 명확하지 않습니다. 먼저 코드를 얻기 위해 페이스 북 서버 측 인증 흐름을 따라야합니다. 사용자가 앱을 승인 한 후 Facebook은 게시 한 스크립트 인 콜백 페이지를 호출합니다. 이 단계에서 어떤 로그인 로직이든 실행할 수 있습니다. 다시 말하지만, 페이스 북 쿠키 (fbsr_xxxx)는 페이스 북이 아닌 사용자가 설정합니다. https://developers.facebook.com/docs/howtos/login/server-side-login/ 문서를 참조하십시오. 도움이 되었기를 바랍니다. – fuyi

+0

초기 질문을 일부 업데이트했습니다. 나는 -> https : // github을 사용하고있다.co.kr/facebook/facebook-php-sdk (페이스 북에서 권장). 예제 로그인 페이지 -> https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php와 동일한 연습을 통해 사용자를 로그인합니다. 사용자가 확인되면 내 웹 사이트에 사용자가 잘 등록되어 있지만 쿠키가 설정되지 않은 것을 모두 수락 한 후에 페이스 북별로 그게 전부 내가''sharedSession '=> true''를 facebooks 클래스의 설정에서 사용해야한다는 것을 알았을 때, 그리고 리다이렉트 루프에 걸렸을 때 – Yohn

0

이유는 필요한 권한이 부여되지 않기 때문에 결국 토큰에 대한 페이스 북 검색으로 돌아가서 다시 돌아옵니다.

필요한 권한을 확인하십시오.

관련 문제