Repository navigation
Expand file tree
/
Copy pathsample.py
More file actions
76 lines (58 loc) · 1.81 KB
/
Copy pathsample.py
File metadata and controls
76 lines (58 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import json
import os
import urllib
import urllib2
import webapp2
from dotenv import Dotenv
# Load Env variables
env = None
try:
env = Dotenv('./.env')
except IOError:
env = os.environ
## CHANGE THIS
PORT = 3000
CLIENT_ID = "YOUR_CLIENT_ID"
CLIENT_SECRET = "YOUR_CLIENT_SECRET"
DOMAIN = "your-domain.auth0.com"
CALLBACK_URL = "http://localhost:%d/callback" % PORT
MAIN_PAGE_HTML = """\
<html>
<body>
<script src="http://cdn.auth0.com/js/lock-6.6.1.min.js"></script>
<script type="text/javascript">
var lock = new Auth0Lock('%s', '%s');
</script>
<button onclick="lock.show()">Login</button>
</body>
</html>
""" % (CLIENT_ID, DOMAIN)
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.write(MAIN_PAGE_HTML)
class LoginCallback(webapp2.RequestHandler):
def get(self):
code = self.request.get("code")
base_url = "https://{domain}".format(domain=DOMAIN)
data = urllib.urlencode([('client_id', CLIENT_ID),
('redirect_uri', CALLBACK_URL),
('client_secret', CLIENT_SECRET),
('code', code),
('grant_type', 'authorization_code')])
req = urllib2.Request(base_url + "/oauth/token", data)
response = urllib2.urlopen(req)
oauth = json.loads(response.read())
userinfo = base_url + "/userinfo?access_token=" + oauth['access_token']
response = urllib2.urlopen(userinfo)
data = response.read()
## print user data
self.response.write(data)
application = webapp2.WSGIApplication([
('/', MainPage),
('/callback', LoginCallback)
], debug=True)
def main():
from paste import httpserver
httpserver.serve(application, host='127.0.0.1', port=PORT)
if __name__ == '__main__':
main()