添加单点登录到GMail API授权

时间:2015-04-24 08:33:40

标签: python-2.7 google-app-engine single-sign-on gmail-api

我已成功在Google App Engine上创建了一个与Gmail API交互的python web-app。我现在想要的是,当获得权限时,我的应用程序还会创建一个用户帐户,用户可以使用他们的Google帐户登录该帐户。这样可以防止用户为我的应用输入另一个密码。

总结一下,目前的工作流程是: 1.用户通过输入电子邮件和密码来创建帐户 2.用户授权GMail访问

我想得到的是: 1.用户连接Google帐户,然后获取帐户并验证GMail访问权限

最好的方法是什么?

我目前的Google API代码如下所示。直接来自Google示例:https://developers.google.com/api-client-library/python/guide/google_app_engine

from apiclient.discovery import build
from google.appengine.ext import webapp
from oauth2client.appengine import OAuth2Decorator

decorator = OAuth2Decorator(
  client_id='your_client_id',
  client_secret='your_client_secret',
  scope='https://www.googleapis.com/auth/calendar')

service = build('calendar', 'v3')

class MainHandler(webapp.RequestHandler):

  @decorator.oauth_required
  def get(self):
    # Get the authorized Http object created by the decorator.
    http = decorator.http()
    # Call the service using the authorized Http object.
    request = service.events().list(calendarId='primary')
    response = request.execute(http=http)

2 个答案:

答案 0 :(得分:1)

  1. 要首先访问Google API,您必须在开发者控制台中注册。检查此link

  2. 我了解您的流程是,用户使用gmail ID和密码登录,用户必须能够访问您的应用。在使用oauth流时,如果在代码中选择“access_type”=“离线”,即使用户离线,也有助于访问信息。为此,您需要refresh token

  3. 在您的开发者控制台中,您必须激活应用程序将要使用的所有API。

  4. 在上面提到的Oauth链接中,您可以查看如何处理授权请求,以及如何对用户进行身份验证。

  5. 如果您想使用service account,请不要忘记domain wide delegation

  6. 在决定scopes时,如果您的应用程序未向用户帐户写入任何信息,请使用只读范围。

  7. 在python中查看此link以获取Gmail API示例客户端代码。

答案 1 :(得分:1)

原来这是我试图做的确切教程:https://developers.google.com/+/web/signin/server-side-flow