我花了几天的时间在网上搜索并为python绘制了一个空白-im!我只想将RPX(janrain)集成到Appengine中-脚本插入和openid令牌返回的代码加载-都很棒-但除此之外,似乎没有人像实际创建openid那样进一步登录有效-为什么?我假设没有会话管理?

这是一个简单的类处理程序,它获取打开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')


现在#这是问题开始的地方-理想情况下,我们可能会很懒,只是将它们登录到Google帐户中-但是,它们不是将用户登录到ie的方法;

user.login(电子邮件)

这样就放弃了使用Google帐户的任何希望-如果我们拥有开放的ID,公平地说-为什么要打扰!

所以...

我需要的是我自己的用户数据存储-很简单-以及确定用户是否已登录的某些方法-会话?但是在AppEngine中,它们不支持会话。

我发现了一些类库,它们说它们可以解决这个问题,但是它们看起来都记录不好并且没有好的代码示例

有人可以帮忙吗?

最佳答案

GAE允许您访问数据库,对吗?生成安全令牌并将其与RPX返回的用户URL一起存储在数据库中。将安全令牌设置为cookie,以便在每次请求时都可以获取它-在数据库中查找令牌,然后从那里进行其余操作。

虽然我担心性能,但实际上对我来说效果很好。

10-08 10:58