2010-01-27 27 views
1

我花了幾天的時間搜索網頁,然後畫一個空白-im新的Python!我只是想將RPX(janrain)整合到Appengine中 - 腳本插入和openid標記的返回代碼 - 這些都很棒 - 但除此之外,沒有人會進一步考慮它,因爲在實際創建openid登錄工作 - 爲什麼?我假設沒有會話管理?RPX,OpenID - 如何爲AppEngine寫一個合適的SignIn處理程序

這是一個簡單的類處理程序,它獲取開放標識的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

你不應該使用所有的帽子 - 即使是一個標題 - 它看起來像你是可愛的。 – 2010-01-27 18:10:46

回答

1

GAE,您可以訪問數據庫,對不對?生成安全令牌並將其與RPX在數據庫中返回的用戶URL一起存儲。將安全令牌設置爲cookie,以便在每次請求時獲得它 - 在數據庫中查看令牌,然後從那裏執行其他操作。

雖然我擔心表演,但實際上我的作品非常好。