2010-01-27 34 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,以便在每次请求时获得它 - 在数据库中查看令牌,然后从那里执行其他操作。

虽然我担心表演,但实际上我的作品非常好。