Package oauth2client :: Module appengine :: Class OAuth2Decorator
[hide private]
[frames] | no frames]

Class OAuth2Decorator

source code


Utility for making OAuth 2.0 easier.

Instantiate and then use with oauth_required or oauth_aware
as decorators on webapp.RequestHandler methods.

Example:

  decorator = OAuth2Decorator(
      client_id='837...ent.com',
      client_secret='Qh...wwI',
      scope='https://www.googleapis.com/auth/plus')


  class MainHandler(webapp.RequestHandler):

    @decorator.oauth_required
    def get(self):
      http = decorator.http()
      # http is authorized with the user's Credentials and can be used
      # in API calls

Instance Methods [hide private]
 
set_credentials(self, credentials) source code
 
get_credentials(self)
A thread local Credentials object.
source code
 
set_flow(self, flow) source code
 
get_flow(self)
A thread local Flow object.
source code
 
__init__(self, client_id, client_secret, scope, auth_uri=GOOGLE_AUTH_URI, token_uri=GOOGLE_TOKEN_URI, revoke_uri=GOOGLE_REVOKE_URI, user_agent=None, message=None, callback_path='/oauth2callback', token_response_param=None, _storage_class=StorageByKeyName, _credentials_class=CredentialsModel, _credentials_property_name='credentials', **kwargs)
Constructor for OAuth2Decorator
source code
 
_display_error_message(self, request_handler) source code
 
oauth_required(self, method)
Decorator that starts the OAuth 2.0 dance.
source code
 
_create_flow(self, request_handler)
Create the Flow object.
source code
 
oauth_aware(self, method)
Decorator that sets up for OAuth 2.0 dance, but doesn't do it.
source code
 
has_credentials(self)
True if for the logged in user there are valid access Credentials.
source code
 
authorize_url(self)
Returns the URL to start the OAuth dance.
source code
 
http(self)
Returns an authorized http instance.
source code
 
callback_path(self)
The absolute path where the callback will occur.
source code
 
callback_handler(self)
RequestHandler for the OAuth 2.0 redirect callback.
source code
 
callback_application(self)
WSGI application for handling the OAuth 2.0 redirect callback.
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Class Variables [hide private]
  credentials = property(get_credentials, set_credentials)
  flow = property(get_flow, set_flow)
Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

get_credentials(self)

source code 
A thread local Credentials object.

Returns:
  A client.Credentials object, or None if credentials hasn't been set in
  this thread yet, which may happen when calling has_credentials inside
  oauth_aware.

get_flow(self)

source code 
A thread local Flow object.

Returns:
  A credentials.Flow object, or None if the flow hasn't been set in this
  thread yet, which happens in _create_flow() since Flows are created
  lazily.

__init__(self, client_id, client_secret, scope, auth_uri=GOOGLE_AUTH_URI, token_uri=GOOGLE_TOKEN_URI, revoke_uri=GOOGLE_REVOKE_URI, user_agent=None, message=None, callback_path='/oauth2callback', token_response_param=None, _storage_class=StorageByKeyName, _credentials_class=CredentialsModel, _credentials_property_name='credentials', **kwargs)
(Constructor)

source code 
Constructor for OAuth2Decorator

Args:
  client_id: string, client identifier.
  client_secret: string client secret.
  scope: string or iterable of strings, scope(s) of the credentials being
    requested.
  auth_uri: string, URI for authorization endpoint. For convenience
    defaults to Google's endpoints but any OAuth 2.0 provider can be used.
  token_uri: string, URI for token endpoint. For convenience
    defaults to Google's endpoints but any OAuth 2.0 provider can be used.
  revoke_uri: string, URI for revoke endpoint. For convenience
    defaults to Google's endpoints but any OAuth 2.0 provider can be used.
  user_agent: string, User agent of your application, default to None.
  message: Message to display if there are problems with the OAuth 2.0
    configuration. The message may contain HTML and will be presented on the
    web interface for any method that uses the decorator.
  callback_path: string, The absolute path to use as the callback URI. Note
    that this must match up with the URI given when registering the
    application in the APIs Console.
  token_response_param: string. If provided, the full JSON response
    to the access token request will be encoded and included in this query
    parameter in the callback URI. This is useful with providers (e.g.
    wordpress.com) that include extra fields that the client may want.
  _storage_class: "Protected" keyword argument not typically provided to
    this constructor. A storage class to aid in storing a Credentials object
    for a user in the datastore. Defaults to StorageByKeyName.
  _credentials_class: "Protected" keyword argument not typically provided to
    this constructor. A db or ndb Model class to hold credentials. Defaults
    to CredentialsModel.
  _credentials_property_name: "Protected" keyword argument not typically
    provided to this constructor. A string indicating the name of the field
    on the _credentials_class where a Credentials object will be stored.
    Defaults to 'credentials'.
  **kwargs: dict, Keyword arguments are be passed along as kwargs to the
    OAuth2WebServerFlow constructor.

Decorators:
  • @util.positional(4)
Overrides: object.__init__

oauth_required(self, method)

source code 
Decorator that starts the OAuth 2.0 dance.

Starts the OAuth dance for the logged in user if they haven't already
granted access for this application.

Args:
  method: callable, to be decorated method of a webapp.RequestHandler
    instance.

_create_flow(self, request_handler)

source code 
Create the Flow object.

The Flow is calculated lazily since we don't know where this app is
running until it receives a request, at which point redirect_uri can be
calculated and then the Flow object can be constructed.

Args:
  request_handler: webapp.RequestHandler, the request handler.

oauth_aware(self, method)

source code 
Decorator that sets up for OAuth 2.0 dance, but doesn't do it.

Does all the setup for the OAuth dance, but doesn't initiate it.
This decorator is useful if you want to create a page that knows
whether or not the user has granted access to this application.
From within a method decorated with @oauth_aware the has_credentials()
and authorize_url() methods can be called.

Args:
  method: callable, to be decorated method of a webapp.RequestHandler
    instance.

has_credentials(self)

source code 
True if for the logged in user there are valid access Credentials.

Must only be called from with a webapp.RequestHandler subclassed method
that had been decorated with either @oauth_required or @oauth_aware.

authorize_url(self)

source code 
Returns the URL to start the OAuth dance.

Must only be called from with a webapp.RequestHandler subclassed method
that had been decorated with either @oauth_required or @oauth_aware.

http(self)

source code 
Returns an authorized http instance.

Must only be called from within an @oauth_required decorated method, or
from within an @oauth_aware decorated method where has_credentials()
returns True.

callback_path(self)

source code 
The absolute path where the callback will occur.

Note this is the absolute path, not the absolute URI, that will be
calculated by the decorator at runtime. See callback_handler() for how this
should be used.

Returns:
  The callback path as a string.

Decorators:
  • @property

callback_handler(self)

source code 
RequestHandler for the OAuth 2.0 redirect callback.

Usage:
   app = webapp.WSGIApplication([
     ('/index', MyIndexHandler),
     ...,
     (decorator.callback_path, decorator.callback_handler())
   ])

Returns:
  A webapp.RequestHandler that handles the redirect back from the
  server during the OAuth 2.0 dance.

callback_application(self)

source code 
WSGI application for handling the OAuth 2.0 redirect callback.

If you need finer grained control use `callback_handler` which returns just
the webapp.RequestHandler.

Returns:
  A webapp.WSGIApplication that handles the redirect back from the
  server during the OAuth 2.0 dance.