我花了好几天时间在网上搜索,我画了一个空白-我也是python新手!我只想将RPX(janrain)集成到Appengine中-为脚本插入加载代码并返回openid令牌-这一切都很好-但除此之外,似乎没有人比实际创建一个有效的openid登录更进一步-为什么?我想没有会话管理?在
下面是一个简单的类处理程序,它获取openid的令牌,然后进行获取以获取用户配置文件。使用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')
现在,问题就在这里开始了——理想情况下,我们可以偷懒,直接把他们登录到谷歌账户——但他们没有办法让用户登录ie
在用户登录名(电子邮件)
所以这就放弃了使用谷歌账户的任何希望——公平地说,如果我们有开放的id——何必麻烦!在
所以。。。在
我需要的是我自己的用户数据存储—这很简单—以及一些识别用户是否登录的方法—会话?但在AppEngine,他们不支持会话。在
我发现了一些类库,它们说它们处理这个问题,但是它们看起来都没有很好的文档,而且没有好的代码示例
有人能帮忙吗?在
GAE允许你访问数据库,对吗?生成一个安全令牌,并将其与RPX返回的用户URL一起存储在数据库中。将安全令牌设置为cookie,以便在每次请求时都获得它-在数据库中查找令牌,然后从那里执行其余操作。在
虽然我很担心它的性能,但它对我来说效果很好。在
有一个GAE食谱应该会有帮助
http://appengine-cookbook.appspot.com/recipe/accept-google-aol-yahoo-myspace-facebook-and-openid-logins/
相关问题 更多 >
编程相关推荐