2012-05-26 3 views
0

페이스 북과 연결을 시도하지만 오류가 있습니다.fbs appID 쿠키가 존재하지 않습니다.

Further Facebook Login Javascript Errors

I 관련된 쿠키

Notice: Undefined index: fbs_appID in /opt/lampp/htdocs/phpdeneme/index.php on line 10 

Notice: Undefined index: sig in /opt/lampp/htdocs/phpdeneme/index.php on line 22 

Warning: file_get_contents(https://graph.facebook.com/me?access_token=) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /opt/lampp/htdocs/phpdeneme/index.php on line 30 



<?php 


define('FACEBOOK_APP_ID', 'APP_ID'); 
define('FACEBOOK_APP_SECRET','SECRET_ID'); 


function get_facebook_cookie($appID,$appSecret){ 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $appID], '\\"'), $args); 


    ksort($args); 
    $payload = ''; 
    foreach($args as $key=>$value){ 

     if($key != 'sig'){ 
      $payload .= $key . '=' . $value; 
     } 
    } 

    if(md5($payload . $appSecret) != $args['sig']) 
      return null; 

    return $args; 

} 

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_APP_SECRET); 
$user = json_decode(file_get_contents('https://graph.facebook.com/me?access_token=' . $cookie['access_token'])); 

?> 


    <html> 
     <body> 
      <?php if($cookie){ ?> 

      Welcome <?= $user->name ?> 
      <?php } else { ?> 
     <fb: login-button></fb:login-button> 
     <?php } ?> 
     <div id="fb-root"></div> 
     <script src="http://connect.facebook.net/en_US/all.js"></script> 
     <script> 
     FB.init({appId: '<?= FACEBOOK_APP_ID ?>' , status: true, cookie: true, xfbml:true}); 
     FB.Event.subscribe('auth.login',function(response){ 
      window.location.reload(); 

     }); 
     </script> 

     </body> 
     </html> 

어떤 문제를 찾을 수없는이 link.Php $ _COOKIE와 비슷한 문제를 가지고? 누락 된 것이 무엇입니까? 어떤 fbs 쿠키가 생성되지 않았습니까?

+0

음 ... 거기에 게시 한 다른 오류는 어떻게됩니까? – Lix

+0

쿠키가 생성되지 않았습니다. S –

+0

브라우저가 해당 웹 사이트에서 PC에 쿠키를 만들도록 허용합니까? –

답변

0

이전 oauth 1.0 형식을 사용하고 있습니다. 이제 새로운 형식을 사용해야합니다.()

get_facebook_cookie 함수() { $ CI = & get_instance;

PHP 코드의 예, 즉, 최소한의 변경과 수정 JS로 충분히 가까워 야 $ app_id = $ CI-> config-> item ('facebook_app_id'); $ application_secret = $ CI-> config-> item ('facebook_app_secret'); 경우 ([ ' fbsr ". $의 APP_ID]는 isset ($ COOKIE 용)) { 목록 ($의 encoded_sig, $ 페이로드) = (폭발'. ', $ COOKIE ['fbsr". $의 APP_ID] 2);

 $sig = base64_decode(strtr($encoded_sig, '-_', '+/')); 
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
     return null; 
    } 
    $expected_sig = hash_hmac('sha256', $payload, 
    $application_secret, $raw = true); 
     if ($sig !== $expected_sig) { 
      return null; 
     } 
     $token_url = "https://graph.facebook.com/oauth/access_token?" 
    . "client_id=" . $app_id . "&client_secret=" . $application_secret. "&redirect_uri=" . "&code=" . $data['code']; 
     $response = file_get_contents($token_url); 

     $params = null; 
     parse_str($response, $params); 
     $data['access_token'] = $params['access_token']; 
     return $data; 
    }else{ 
     return null; 
} 

}

이이 문제에 대한 몇 가지 다른 맛있는 가벼운 음식이 useful blog post에서왔다.