Google App Engine 入门:用户系统服务
五月 4th, 2008
(本文译自:Google App Engine Getting Started)
Google App Engine 在其SDK中提供了很多有用的服务。其中之一就是用户系统服务,这个服务让我们可以轻松的集成Google的用户帐号系统,这样使用我们的应用的用户,就不需要注册单独的帐号,直接使用现有的Google帐号就可以登录了。
下面,我们为Hello word加入用户判断功能。
使用Users
重新编辑helloworld/helloworld.py, 将代码修改如下:
import wsgiref.handlers刷新页面,你会发现直接跳转到了本地模拟的Google登录页面了,在这个页面输入你的用户名,你的web应用程序就会为你生成一个
from google.appengine.api import users
from google.appengine.ext import webapp
class MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
if user:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + user.nickname())
else:
self.redirect(users.create_login_url(self.request.uri))
def main():
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == "__main__":
main()
User 对象。
当你发布你的应用之后,这个程序将会直接跳转到真正的Google登录页面,等你登录成功后再跳转到你的程序页面。
The Users API
我们仔细查看一下代码:user = users.get_current_user()如果用户已经登录,
get_current_user() 返回 User 对象,否则返回 None.
if user:如果用户已经登录,向登录用户显示一段欢迎信息
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + user.nickname())
else:如果用户尚未登录, 调用
self.redirect(users.create_login_url(self.request.uri))
webapp 跳转到Google 帐号登录页面。这个跳转页面包含了登录成功后要返回的URL (self.request.uri),用户登录成功后,就会回到指定的页面了。
想了解更多信息, 请查看 the Users reference.
我想问一下为什么我按照上面的在本地实现,确打印出来错误呢?
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3206, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3149, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 525, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2450, in Dispatch
CGIDispatcher.Dispatch(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2402, in Dispatch
self._module_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2439, in curried_exec_cgi
return ExecuteCGI(*args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2310, in ExecuteCGI
logging.debug('Executing CGI with env:\n%s', pprint.pformat(env))
File "C:\Python27\lib\pprint.py", line 60, in pformat
return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object)
File "C:\Python27\lib\pprint.py", line 119, in pformat
self._format(object, sio, 0, 0, {}, 0)
File "C:\Python27\lib\pprint.py", line 137, in _format
rep = self._repr(object, context, level - 1)
File "C:\Python27\lib\pprint.py", line 230, in _repr
self._depth, level)
File "C:\Python27\lib\pprint.py", line 242, in format
return _safe_repr(object, context, maxlevels, level)
File "C:\Python27\lib\pprint.py", line 284, in _safe_repr
for k, v in _sorted(object.items()):
File "C:\Python27\lib\pprint.py", line 75, in _sorted
with warnings.catch_warnings():
File "C:\Python27\lib\warnings.py", line 327, in __init__
self._module = sys.modules['warnings'] if module is None else module
KeyError: 'warnings'
看的我是晕头转向的,无从着手,用了N年的Oblog系统,可以自己编写模版,怎么用这个GAE,一下子不知道怎么搞了,晕啊
请问,我用了micolog 上传到 google app eng 了,当我切换到管理面板时,需要登入,但我是用自已的域名和邮件地址(非gmail,申请了app套件)注册的gae,它现在只能用 gmail 来登入,如何解决? 还是有其它我没注意的地方?
为什么搞个这么简单的计算.... ....
楼主玩得很有瘾,就是不介绍Java的开发,,,这样有相当部分的人看着会累~~~~
~这个功能用的很少~
asdasd
请问登录的页面能不能转到中文界面
麻烦问下 我按照上边代码输入 怎么刷新出来成空白页面了呢?
当然可以不用Google Account进行登录了,不过这种情况下,需要自己处理所有的细节,比如cookie,已经判断用户是否登录等等。。。
如果使用Google Account方式登录,就不需要处理任何东西了,效果和使用.net form authorization是一样的。
我想問,能不用google account 作為登入嗎。
還一個白痴問題,有像 .net 的form authorization 的操作嗎?
還是,每一個頁面都要查一下用戶狀態呢?
謝謝