2010-01-27 4 views
1

Ive는 웹 검색을 위해 며칠 동안 비어있는 새로운 파이썬을 그리기도했습니다! 간단히 말해서 RPX (janrain)를 Appengine에 통합하기를 원합니다. 스크립트 삽입 코드와 openid 토큰 반환에 대한 코드가 많습니다. 그러나 그 외에도 아무도 실제로 openid 로그인 작동 - 왜? 나는 어떤 세션 관리를 가정하지 않습니까?RPX, OpenID - AppEngine에 적합한 SignIn 처리기를 작성하는 방법

다음은 공개 ID에 대한 TOKEN을 가져온 다음 사용자 프로필을 가져 오기위한 가져 오기를 만드는 간단한 클래스 처리기입니다. RPX를 사용하여 매우 간단합니다.

간단한 핸들러는 RPX

의 응답 여기에 지금 #
class RPXHandler(webapp.RequestHandler): 
    def get(self): 
    token = self.request.get('token') 
    url = 'https://rpxnow.com/api/v2/auth_info' 
    args = { 
     'format': 'json', 
     'apiKey': '#YOUR KEY#', 
     'token': token 
     } 
    r = urlfetch.fetch(url=url, 
         payload=urllib.urlencode(args), 
         method=urlfetch.POST, 
         headers={'Content-Type':'application/x-www-form-urlencoded'} 
         ) 
json = simplejson.loads(r.content) 

logging.info(json) 

if json['stat'] == 'ok':  
    unique_identifier = json['profile']['identifier'] 
    nickname = json['profile']['preferredUsername'] 
    email = json['profile']['email'] 


    # log the user in using the unique_identifier 
    # this should your cookies or session you already have implemented 


    self.redirect('static/loggedin.html') 
    else: 
    self.redirect('static/error.html') 

을 얻을 수있는 문제가 시작하는 곳이다 - 이상적으로 우리가 게으른 수 있으며, 단지 구글 계정로 로그 -하지만 사용자가 로그인 할 수있는 방법들이 없다 즉;

user.login (이메일)

은 그래서 구글 계정을 사용하여 모든 희망을 포기 - 공정에 우리가 개방 ID가있는 경우 - 왜 귀찮게!

SO ...

내가 뭘해야 할 것은 내 자신의 사용자 데이터 저장소입니다 - 간단한 먹으 렴 - 사용자가 로그인 한 경우 식별 어떤 수단 - 세션? 그러나 AppEngine에서는 세션을 지원하지 않습니다.

나는 그들이이 다루는 말을 몇 가지 클래스 libarys을 찾았지만 모두가 심하게 사람이

를 도울 수 문서화하고 좋은 코드 예제

없이 보이는?

+1

당신은 모든 캡을 사용하지 말아야합니다 - 제목에도 불구하고 - 당신은 멍청한 것처럼 보입니다. –

답변

1

GAE, 바로 당신이 데이터베이스에 액세스 할 수 있도록해야 GAE 조리법이있다? 보안 토큰을 생성하고 RPX가 데이터베이스에 반환 한 사용자 URL과 함께 저장합니다. 모든 요청에 ​​대해 얻을 수 있도록 보안 토큰을 쿠키로 설정하십시오. 데이터베이스에서 토큰을 확인한 다음 나머지를 수행하십시오.

나는 성능에 대해 걱정하고 있지만 실제로는 꽤 잘한다.

관련 문제