2011-03-20 6 views
0

이 다음 내 OAuth를 템플릿입니다철탑와 페이스 북

top.location.href = 'HTTPS : //graph.facebook.com/oauth/authorize CLIENT_ID = $ {설정 [' 'facebook.appid]} & redirect_uri = $ {config [ 'facebook.callbackurl']} & 디스플레이 = 페이지 & 범위 = 게시 _ 스트림 '; 나는 (원하는) 내가 로그인하라는 메시지가 표시하고있는 페이지를 칠 때 여기 을 클릭하여 로그인시 내가 권한 페이지와 앱 페이지 사이의 루프에서 리디렉션하고,이 응용 프로그램

권한을 부여합니다. 클래스 RootController (BaseController) :

def __before__(self): 
    tmpl_context.user = None 
    if request.params.has_key('session'): 
     access_token = simplejson.loads(request.params['session'])['access_token'] 
     graph = facebook.GraphAPI(access_token) 
     tmpl_context.user = graph.get_object("me") 

def index(self): 
    if not tmpl_context.user: 
     return render('/oauth_redirect.mako') 
    return render('/index.mako') 

아마 콜백으로, 내 설정이 어딘가입니다 같은데요

내 컨트롤러처럼 보인다.

내 코드 또는 페이스 북에 대한 python sdk에 문제가 있는지 확실하지 않습니다.

+0

는 U하려고하는 흐름 흠, 그렇지? "authorization_code"흐름 (또는 http://developers.facebook.com/docs/authentication/에서 문서화 된 "서버 측"흐름)을 사용하는 경우 예제에서 누락되거나 빠져 있습니다. 사용자는 응용 프로그램이 액세스 토큰을 교환해야하는 인증 코드와 함께 다시 리디렉션됩니다. –

답변

1

난 당신이

https://graph.facebook.com/oauth/authorize?client_id= $를이

def index(self): 
    if request.params.has_key('session'): 
     access_token = simplejson.loads(request.params['session'])['access_token'] 
     graph = facebook.GraphAPI(access_token) 
     tmpl_context.user = graph.get_object("me") 
     return render('/index.mako') 
    return render('/oauth_redirect.mako') 

추천하고 다음에 당신의 HREF URL을 변경 redirect_uri로에보고하여 응용 프로그램에 인덱스 뷰에 가리 키도록 코드를 수정해야한다고 생각 {설정 [ 'facebook.appid']} & 다음 =/응용 프로그램/인덱스 & 디스플레이 = 페이지 & 범위 = publish_stream