2011-07-27 3 views
3

을 사용하여 서명 된 요청 업데이트 새로운 Javascript SDK 및 OAuth 2.0이 출시되면서 사용자를 리디렉션하지 않고 SignedRequest (및 authtoken)를 업데이트 할 수 있는지 궁금하여 다음 접근 방식을 사용했습니다. 기본적으로 이것은 내 앱이 토큰의 만료 기간 2 시간을 지키기위한 키프로스 방식입니다.Javascript OAuth 2.0 SDK

  1. A는 내가 다음을 수행, 서명 요청을 업데이트하려면 페이스 북 C#을 SDK

를 사용하여 프론트 엔드 + 자바 스크립트

  • 웹 서비스 (ASMX)를 플래시 :

    내 애플 구성

    1. 매 20 초마다 getTimeout()을 사용하여 FB.getLoginStatus를 호출합니다.
    2. 이것은 새로운 signedRequest를 반환합니다.
    3. 제 서버에 대한 모든 호출에서이 매개 변수를 포함하도록 내 ajaxSetup을 업데이트합니다.

      var signedRequest; 
      function updateSignedRequest(_signedRequest) { 
          signedRequest = _signedRequest; 
          $.ajaxSetup({ data: { "signed_request": signedRequest} }); 
      } 
      (function ensureAuth() { 
          setTimeout(function() { checkAuth(); ensureAuth(); }, 20000); 
      })(); 
      function checkAuth() { 
          FB.getLoginStatus(handleResCallback, true); 
      } 
      function handleResCallback(res) { 
          if (!res.authResponse) { 
           handleNotConnected(); 
          } else { 
           signedRequest = res.authResponse.signedRequest; 
          } 
      } 
      

    몇 가지 질문 :

    나는 페이스 북 C#을 SDK는 각각의 새로운 요청이 아닌 쿠키에 signed_request 매개 변수에 보이는 생각합니다. 항상 그렇습니까?

    또한이 접근법에서 볼 수있는 다른 모든 구멍이 있습니까?

  • +0

    저는 그렇습니다. sdk가 Facebook 컨텍스트 내에서 작동하기 때문에 쿠키가 변경 불가능한 데이터와 함께 작동 할 수 있습니다. 모든 응용 프로그램과 함께 걷는 객체와 같습니다. 질문이 명확하지 않습니다. sigend 요청을보고 싶지 않아요. –

    답변

    0

    이것은 사용자에게 최선의 방법이 아닐 수 있습니다. 어떤 이유로 든 로그 아웃했거나 인증에 실패하면 팝업을 표시하거나 로그인하도록 리디렉션해야합니다. 즉, 기다리는 것이 아니라 임의의 시간에 무엇을하고 있는지 중단됩니다. 인증을 요구하는 작업을 수행 한 다음 로그인 등을 표시합니다. 매 20 초마다 확인하는 대신 인증 이벤트를 구독 할 수도 있습니다. 사용자가 앱을 deauth하거나 로그 아웃 할 때 handleNotConnected()를 콜백으로 설정할 수 있습니다. 또는 토큰의 만료 시간을 읽을 수 있으며 만료 시간이 지난 후에 만 ​​갱신 할 수 있습니다.