googleplusauth is a Pluggable application for TurboGears2.
It aims at making easy to implement authentication and registration with Google in any TurboGears2 application.
googleplusauth can be installed both from pypi or from bitbucket:
pip install tgapp-googleplusauth
should just work for most of the users
In your application config/app_cfg.py import plug:
from tgext.pluggable import plug
Then at the end of the file call plug with googleplusauth:
plug(base_config, 'googleplusauth')
on a sql database, to create the table, you can run the migration(s) with:
gearbox migrate-pluggable -c development.ini googleplusauth upgrade
or if you can still drop the database, setup-app should be just fine.
googleplusauth provides a helpers which will automatically generate the buttons and the javascript required to let your users log into your application using Google:
- h.googleplusauth.login_button(client_id, scope=None, data_cookiepolicy=None, img_btn_login=None, remember=None)
Places a login/registration button, automatically creates a new user if he never logged with google, otherwise simply logs him in.
The
client_id
parameter is YOUR_CLIENT_ID.apps.googleusercontent.comThe
scope
parameter is the permissions that the application will ask to google. By default those are only https://www.googleapis.com/auth/userinfo.email. For more scope: https://developers.google.com/oauthplayground/The
data_cookiepolicy
parameter indicate the domains for which to create sign-in cookies.The
img_btn_login
parameter indicate the button image url.The
remember
parameter can be used to log the user with an expiration date instead of using a session cookie, so that the session can last longer than the browser tab life.
This is the html of the button, if you want customize the button style:
<div id="button-container"> <div id="google-login-button" style="cursor: pointer;" onclick="perform_google_login()"> <img id="img-login" src='%(img_btn_login)s' alt='Google Login' /> </div> </div>
googleplusauth makes available a some hooks which will be called during some actions to alter the default behavior of the appplications:
- googleplusauth.on_registration(google_response, user) -> Runs when it is registering a new user from google
- login, permits to add or modify additional data to the user.
- googleplusauth.on_login(google_response, user) -> Runs when user perform google login,
- permits to update the user data.
Users will have a new related entity called googleplusauth
.
Accessing user.googleplusauth
it is possible to access the user user.googleplusauth.google_id
and user.googleplusauth.profile_picture
and more.