Skip to content

Instantly share code, notes, and snippets.

@Eugeny
Last active August 29, 2015 13:57
Show Gist options
  • Save Eugeny/9737742 to your computer and use it in GitHub Desktop.
Save Eugeny/9737742 to your computer and use it in GitHub Desktop.
GOOGLE_CLIENT_ID = '828226820573-...'
GOOGLE_CLIENT_SECRET = 'GjVcxp...'
GOOGLE_OAUTH_URL = 'https://accounts.google.com/o/oauth2/auth?scope=https%%3A%%2F%%2Fwww.googleapis.com%%2Fauth%%2Fuserinfo.email+https%%3A%%2F%%2Fwww.googleapis.com%%2Fauth%%2Fuserinfo.profile&state=&redirect_uri=%s&response_type=code&client_id=%s' # add gmail scopes...?
GOOGLE_TOKEN_URL = 'https://accounts.google.com/o/oauth2/token'
GOOGLE_REDIRECT_URL = 'http://%s/auth/google/callback' % HOST
...
urlpatterns = patterns(...,
url(r'^auth/google/login$', '_login'),
url(r'^auth/google/callback$', 'callback'),
)
...
def _login(request):
url = settings.GOOGLE_OAUTH_URL % (settings.GOOGLE_REDIRECT_URL, settings.GOOGLE_CLIENT_ID)
return HttpResponseRedirect(url)
def callback(request):
if 'error' in request.GET:
return HttpResponseRedirect('/')
code = request.GET['code']
post = {
'code': code,
'client_id': settings.GOOGLE_CLIENT_ID,
'client_secret': settings.GOOGLE_CLIENT_SECRET,
'redirect_uri': settings.GOOGLE_REDIRECT_URL,
'grant_type': 'authorization_code',
}
token = requests.post(settings.GOOGLE_TOKEN_URL, post).json()['access_token']
user = requests.get('https://www.googleapis.com/oauth2/v1/userinfo?access_token=' + token).json()
....user...
return HttpResponseRedirect(....)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment