在GAE上实现Google与openId Connect的连接
问题描述:
我正在尝试编写一个基本的GAE应用程序来测试OpenId Connect。它在日志中发生错误失败:people()。get()中的“权限不足”。看起来这个程序要求OpenId证书,而不是OAuth(在登录页面的url中有一个重定向到https://accounts.google.com/o/openid2/auth,但这是隐含的,如何明确要求OAuth?很奇怪,因为decorator.has_credentials()返回True这些OpenID凭证......在GAE上实现Google与openId Connect的连接
import logging
import webapp2
from apiclient.discovery import build
from oauth2client.appengine import OAuth2Decorator
from google.appengine.api import users
decorator = OAuth2Decorator(
client_id='123456789999.....googleusercontent.com',
client_secret='ABCDEF.........',
scope=['https://www.googleapis.com/auth/plus.login'])
service = build('plus', 'v1')
class MainHandler(webapp2.RequestHandler):
@decorator.oauth_aware
def get(self):
if decorator.has_credentials():
response =service.people().get(userId="me").execute(http=decorator.http())
# Write the profile data
self.response.write(unicode(response))
else:
url = decorator.authorize_url()
# Write a page explaining why authorization is needed,
# and provide the user with a link to the url to proceed.
# When the user authorizes, they get redirected back to this path,
# and has_credentials() returns True.
self.response.write('You must login : <a href="'+url+'">Go</a>')
app = webapp2.WSGIApplication([
('/', MainHandler),
(decorator.callback_path, decorator.callback_handler())],
debug=True)
答
你必须激活Google+ API在谷歌控制台http://code.google.com/apis/console
的API &认证/ API的/ Google+的API
,并单击按钮与文字:“启用API “
看起来好像使用了OpenID 2.0而不是OAuth 2(请参阅授权屏幕上的消息) – frank 2015-04-01 20:55:38