【发布时间】:2016-02-16 08:29:32
【问题描述】:
我一直在努力使以下 python 代码示例正常工作,但没有成功 https://cloud.google.com/appengine/docs/python/oauth/
gae-test.py
from google.appengine.api import oauth
import logging
import traceback
import webapp2
class Test(webapp2.RequestHandler):
def get(self):
scope = 'https://www.googleapis.com/auth/userinfo.email'
self.response.write('\noauth.get_current_user(%s)' % repr(scope))
try:
user = oauth.get_current_user(scope)
self.response.write(' = %s\n' % user)
self.response.write('- auth_domain = %s\n' % user.auth_domain())
self.response.write('- email = %s\n' % user.email())
self.response.write('- nickname = %s\n' % user.nickname())
self.response.write('- user_id = %s\n' % user.user_id())
except oauth.OAuthRequestError, e:
self.response.set_status(401)
self.response.write(' -> %s %s\n' % (e.__class__.__name__, e.message))
logging.warn(traceback.format_exc())
app = webapp2.WSGIApplication([
('/', Test),
], debug=True)
和 app.yaml
application: mytestapp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: .*
script: gae-test.app
每次错误都是NotAllowedError。它永远不会让用户同意屏幕。
我在 GAE 项目中创建了客户端 ID(尽管我认为仅检索用户电子邮件没有必要),并且还填写了用户同意书。我认为必须启用所有必要的 API,因为 users.get_current_user() 工作正常。
我的要求是从 users.get_current_user() 中删除丑陋的用户同意屏幕,因此一直在尝试这种方法。
【问题讨论】:
-
您是在 dev_appserver 上本地运行它,还是部署到 yourappname.appspot.com 上的生产应用程序?
-
我在 appspot.com 上直播。刚刚更新了我的完整代码。
标签: python python-2.7 google-app-engine oauth-2.0