2012-04-26 2 views
0

Kohana에서 Facebook 인증을 시도 할 때 문제가 있습니다.Kohana의 Facebook 인증 오류

내가 뭘 할 것은 : kohana에서

내가 가지고 내가이 코드

 

href="https://www.facebook.com/dialog/oauth?client_id=341106515944015"&redirect_uri=http://verana.ge/fbauth/&scope=user_about_me&state=veranalast"> 

와 컨트롤러 폴더에

내가이에게 내가 가진 컨트롤러라는 fbauth.php를 내장 한보기 파일이라고 loginview.php 이 코드

public function action_index() 
{ 

    $app_id = "341106515944015"; 
    $app_secret = "79f547b92f34f886cc8d51ca1a5d33e0"; 
    $my_url = "http://verana.ge/"; 

    // session_start(); <!-- commented because in Kohana the Session is already started --> 

    $code = $_REQUEST["code"]; 

    if(empty($code)) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
     $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
    . $_SESSION['state']; 
    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 

if($_REQUEST["state"] = 'veranalast') { 
    $token_url = "https://graph.facebook.com/oauth/access_token?" 
    . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&client_secret=" . $app_secret . "&code=" . $code; 


    $response = file_get_contents($token_url); 

    $params = null; 

    parse_str($response, $params); 


    $graph_url = "https://graph.facebook.com/me?access_token=" 
      . $params['access_token']; 

    $user = json_decode(file_get_contents($graph_url)); 
      echo("Hello " . $user->name); 
} 
else { 
    echo("The state does not match. You may be a victim of CSRF."); 
} 


} 

하지만 난 페이스 북의 링크를 명중하고 난 다음

을 말한다 오류가 연결을 시도 할 때
 
    ErrorException [ Warning ]: file_get_contents(https://graph.facebook.com/oauth/access_token?client_id=341106515944015&redirect_uri=http%3A%2F%2Fverana.ge%2F&client_secret=79f547b92f34f886cc8d51ca1a5d33e0&code=AQB9jQDcWXNVhPoxhOH-GyJ_0P0UQD9y5wfFy8cfP48TxvlX0VnycEWSpTOC0NWXTyCfssTUHCwFjmZdySy74zor_AQGvtzE5YCkB3asMBhWiiAJhesbFa_GrQIzT7UWiNrbl73CmVz5hell-shwrnavUviuDvpMqg6jCbMBHa6nb39xvidf-P5KOe4wlyR9TG8) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad APPPATH/classes/controller/fbauth.php [ 32 ] 
27    $token_url = "https://graph.facebook.com/oauth/access_token?" 
28    . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
29    . "&client_secret=" . $app_secret . "&code=" . $code; 
30 
31    
32    $response = file_get_contents($token_url); 
33    
34    $params = null; 
35       
36    parse_str($response, $params); 
37 

또한 두 번 확인을 위해 Kohana 외부에서이 함수를 만들었고 문제없이 작동했습니다. 내가 무슨 짓을했는지

는 아웃 사이드 Kohana은 내가 HTML을 페이스 북 인증 태그를 퍼트 옆 내가 testauth.php에 의해 지정된 파일이있는 난과 동일 코드를 퍼트 만든 곳의 index.php에 의해 지정된 파일을 생성 fbauth.php에 putted 그리고 내가 문제없이 일했다.

어디서 알아낼 수있는 간단한 방법 일지 모르지만 잘 모릅니다. 문제를 해결하는 방법을 알려주십시오.

Ides?

답변

0

당신이 https://graph.facebook.com/oauth/access_token?client_id=341106515944015&redirect_uri=http%3A%2F%2Fverana.ge%2F&client_secret=79f547b92f34f886cc8d51ca1a5d33e0&code=AQB9jQDcWXNVhPoxhOH-GyJ_0P0UQD9y5wfFy8cfP48TxvlX0VnycEWSpTOC0NWXTyCfssTUHCwFjmZdySy74zor_AQGvtzE5YCkB3asMBhWiiAJhesbFa_GrQIzT7UWiNrbl73CmVz5hell-shwrnavUviuDvpMqg6jCbMBHa6nb39xvidf-P5KOe4wlyR9TG8을 여는 해봤 사전에 감사합니다? 400 HTTP 오류를 생성합니다. 모든 것은 괜찮습니다.

+0

빠른 응답 감사합니다. 동일한 코드를 사용하는 동일한 호스트의 Kohana 외부에서 Facebook 인증을 수행 할 때이 오류가 표시되지 않으며 Kohana에서이 오류가 발생하는 이유를 찾을 수 없습니다. –

+0

나는 가면을'은 https : //graph.facebook.com/oauth/access_token CLIENT_ID = 341106515944015 & redirect_uri로 = HTTP % 3A % 2F % 2Fverana.ge % 2 층 및 client_secret = 79f547b92f34f886cc8d51ca1a5d33e0 및 코드 = AQB9jQDcWXNVhPoxhOH-GyJ_0P0UQD9y5wfFy8cfP48TxvlX0VnycEWSpTOC0NWXTyCfssTUHCwFjmZdySy74zor_AQGvtzE5YCkB3asMBhWiiAJhesbFa_GrQIzT7UWiNrbl73CmVz5hell-shwrnavUviuDvpMqg6jCbMBHa6nb39xvidf-P5KOe4wlyR9TG8' 나 자신은 내가 OAuth를 참조? 예외. PHP OAuth 라이브러리'http : // docs.php.net/manual/en/book.oauth.php'를 사용해야하지만'file_get_contents()'만 사용해야하는 것은 아닐까요? –

+0

나는 fbauth.php의 코드 $ _REQUEST [ 'code']를 if (isset ($ _REQUEST [ 'code'])) $ code = $ _REQUEST [ "code"]; 잘 작동하는지 확인하십시오. –