2012-04-01 3 views
2

방금 ​​설명서를 읽었지만 사용자를 로그 아웃하는 방법은 설명하지 않았습니다. 내 문제는이 유사합니다OAuth 서버 측을 사용한 Facebook 로그 아웃

Facebook JS SDK FB.logout() doesn't terminate user session

하지만이 서버 측 흐름을 사용하고 있습니다. 쿠키를 삭제하면 사용자를 로그 아웃 할 것이므로 무효화 할 쿠키의 이름을 알아야한다고 생각합니다. 이 FB 쿠키에 대한 액세스 권한을 필요로 - 당신은 FB에서 사용자가 로그인 할 수 없습니다

class FBLogoutHandler(webapp2.RequestHandler): 

    csrf_protect = False 

    def get(self): 
     logging.debug('in fblogout') 
     current_user = main.get_user_from_cookie(self.request.cookies, 
       facebookconf.FACEBOOK_APP_ID, 
       facebookconf.FACEBOOK_APP_SECRET) 
     if current_user: 
      graph = main.GraphAPI(current_user['access_token']) 
      profile = graph.get_object('me') 
      accessed_token = current_user['access_token'] 
     logging.debug('setting cookie') 
     self.set_cookie('fbsr_' + facebookconf.FACEBOOK_APP_ID, None, 
         expires=time.time() - 86400) 

     self.redirect('https://www.facebook.com/logout.php?next=http://www.koolbusiness.com/fbredirect&access_token=%s' 
         % accessed_token) 

    def set_cookie(
     self, 
     name, 
     value, 
     expires=None, 
     ): 
     if value is None: 
      value = 'deleted' 
      expires = datetime.timedelta(minutes=-50000) 
     jar = Cookie.SimpleCookie() 
     jar[name] = value 
     jar[name]['path'] = '/' 
     if expires: 
      if isinstance(expires, datetime.timedelta): 
       expires = datetime.datetime.now() + expires 
      if isinstance(expires, datetime.datetime): 
       expires = expires.strftime('%a, %d %b %Y %H:%M:%S') 
      jar[name]['expires'] = expires 
     self.response.headers.add_header(*jar.output().split(': ', 1)) 

답변

1

: 내가 변경 할 수있는 쿠키의 이름을 알고 있다고 가정 곳

여기에 내가 로그 아웃이다 너는 그렇지 않다.

자신의 앱에서만 사용자를 로그 아웃 할 수 있습니다.

+0

감사합니다. 사용자가 내 앱에서 로그 아웃하는 것을 원하는대로 할 수 있습니다. –

+1

[페이스 북의 플랫폼 정책] (http://developers.facebook.com/policy/)을 위반하기 때문에 답변이 될 수 없습니다 : 항목 6은 '귀하의 웹 사이트는 명시 적으로'로그 아웃 '옵션을 제공해야합니다 페이스 북에서 사용자를 로그 아웃한다. ' –

+0

OP가 서버 측 로그 아웃을 요청합니다. Afaik Facebook은 클라이언트 측 자바 스크립트 로그 아웃만을 제공합니다 : http://stackoverflow.com/questions/658027/logout-with-facebook –

3

JS SDK를 사용하지 않는 방법으로 서버 측 FB 인증을 수행하는 사람에게 바람직합니다. 여기서는 https://stackoverflow.com/a/9799430/117989입니다. http://developers.facebook.com/docs/authentication/에서

:

공급

https://www.facebook.com/logout.php? 
    next=YOUR_REDIRECT_URL 
    &access_token=USER_ACCESS_TOKEN 

의 URL로 사용자를 리디렉션하여 프로그래밍 방식 페이스 북의 사용자가 로그 아웃 할 수

페이스 북에서 사용자 로그인 next 매개 변수는 앱의 설정에 정의 된대로 애플리케이션과 동일한 기본 도메인을 가진 URL이어야합니다. ings.

관련 문제