1

我花了几天时间在网上搜索并且我画了一个空白 - 我也是 python 新手!我只是想将 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 帐户中——但它们不是让用户登录的方法,即;

用户登录(电子邮件)

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

所以...

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

我发现了一些类库,它们说他们处理这个问题,但它看起来都没有很好的文档记录并且没有好的代码示例

任何人都可以帮忙吗?

4

2 回答 2

1

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

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

于 2010-01-28T20:34:10.420 回答
0

有一个 GAE 配方应该会有所帮助

http://appengine-cookbook.appspot.com/recipe/accept-google-aol-yahoo-myspace-facebook-and-openid-logins/

于 2010-01-28T20:31:08.883 回答