2012-07-18 4 views
0

저는 페이스 북 쿠키를 서버 측에서 처리하는 우리의 웹 앱에서 Facebook 인증을 구현하려고합니다. 우리는 자바 스크립트 SDK를 사용하여 로그인을 수행하고 쿠키를 설정합니다.Facebook JS SDK가 쿠키를 설정하지 않습니다.

그러나 어떻게 든 Facebook SDK가 fbsr_APPID 쿠키 (또는 쿠키)를 설정하지 않는 것 같습니다. 우리는 페이스 북이 제공되는 로그인 위젯을 통해 로그인을 수행 할 수

window.fbCallbacks = [] 

    # Create initialization function 
window.fbAsyncInit = -> 
    fbConfig = 
    appId:  '<APPID here>' 
    channelUrl: '/assets/channel.html' 
    status:  true 
    cookie:  true 
    xfbml:  true 

    FB.init fbConfig 

    cb() for cb in window.fbCallbacks 

# Set it up 
((d)-> 
    id = 'facebook-jssdk' 
    ref = d.getElementsByTagName('script')[0] 
    return if d.getElementById id 

    js   = d.createElement 'script' 
    js.id  = id 
    js.async = true 
    js.src  = "//connect.facebook.net/en_US/all.js" 
    ref.parentNode.insertBefore js, ref 
)(document) 

: 이것은 커피 스크립트 코드

<div class="fb-login-button" data-show-faces="true" data-scope="publish_stream"/> 

일부 추가 정보 :이 크롬 안정적이고 카나리아에서 테스트되었습니다

  • IE9는 로컬 호스트와 127.0.0.1 모두에서 --enable-file-cookies가 설정되어 있거나 설정되어 있지 않은 상태입니다. 나는 이것이 브라우저 문제가 아니라는 것을 의미한다고 말할 수 있습니다.
  • 나는 채널 파일을 열심히 보려고했지만 지금은 어디에서나 완벽하게 액세스 할 수 있습니다.
  • JS에서 제 코드로 쿠키를 설정하는 것이 좋습니다.
  • 내 로그인 위젯이 제대로 장식되어 있고 이미 내가 로그인 한 후에도 로그인했기 때문에 JS SDK가 제대로로드됩니다.
  • 콘솔에 오류가보고되지 않습니다. 그것은 완전히 비어 있습니다.
  • 커피 스크립트를 Facebook Developers의 초기화 코드 JavaScript 예제에서 복사 한 것으로 바꾸어도 작동하지 않습니다.

무슨 일입니까? Facebook에서 내 앱 쿠키를 설정하지 않는 이유는 무엇입니까?

는 참고로, 여기에 위의 커피 스크립트에 의해 생성 된 자바 스크립트입니다 :

(function() { 
    window.fbCallbacks = []; 
    window.fbAsyncInit = function() { 
    var cb, fbConfig, _i, _len, _ref, _results; 
    fbConfig = { 
     appId: '<appid>', 
     channelUrl: '/assets/channel.html', 
     status: true, 
     cookie: true, 
     xfbml: true 
    }; 
    FB.init(fbConfig); 
    _ref = window.fbCallbacks; 
    _results = []; 
    for (_i = 0, _len = _ref.length; _i < _len; _i++) { 
     cb = _ref[_i]; 
     _results.push(cb()); 
    } 
    return _results; 
    }; 
    (function(d) { 
    var id, js, ref; 
    id = 'facebook-jssdk'; 
    ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) { 
     return; 
    } 
    js = d.createElement('script'); 
    js.id = id; 
    js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    return ref.parentNode.insertBefore(js, ref); 
    })(document); 
}).call(this); 

답변

0

내가 SDK를 오해 나타납니다. 로그인 버튼 위젯은 실제로 로컬에 쿠키를 설정하지 않습니다. Facebook 및 JavaScript를 통해 인증 및 액세스를 관리하므로 서버의 인증 토큰에 대한 액세스를 허용하지 않습니다.

JS SDK의 FB.login() 함수를 사용하면 쿠키가 설정되었습니다.

관련 문제