|
6 | 6 | import requests |
7 | 7 |
|
8 | 8 |
|
9 | | -def get_access_token_from_code(backend, code): |
10 | | - """Get access token for any OAuth backend from code""" |
| 9 | +def get_payload(backend, code): |
| 10 | + |
11 | 11 |
|
12 | 12 | key = f"{backend.upper()}_KEY" |
13 | 13 | secret = f"{backend.upper()}_SECRET" |
14 | 14 |
|
15 | 15 | client_id = os.environ.get(key, "nokey") |
16 | 16 | client_secret = os.environ.get(secret, "nosecret") |
17 | 17 |
|
18 | | - url = c.OAUTH[backend]['url'] |
19 | 18 |
|
20 | | - payload = { |
| 19 | + if backend == 'github': |
| 20 | + payload = { |
| 21 | + 'code': code, |
| 22 | + 'client_id': client_id, |
| 23 | + 'client_secret': client_secret, |
| 24 | + } |
| 25 | + |
| 26 | + elif backend == 'google_oauth2': |
| 27 | + payload = { |
21 | 28 | 'code': code, |
22 | 29 | 'client_id': client_id, |
23 | 30 | 'client_secret': client_secret, |
| 31 | + 'redirect_uri': "http://localhost/auth/google/callback", |
| 32 | + 'grant_type': "authorization_code" |
24 | 33 | } |
25 | 34 |
|
| 35 | + return payload |
| 36 | + |
| 37 | + |
| 38 | +def get_access_token_from_code(backend, code): |
| 39 | + """Get access token for any OAuth backend from code""" |
| 40 | + |
| 41 | + url = c.OAUTH[backend]['url'] |
| 42 | + |
| 43 | + payload = get_payload(backend, code) |
| 44 | + |
26 | 45 | r = requests.post(url, data=payload) |
27 | 46 |
|
28 | 47 | # TODO: cleanup logic |
29 | 48 | url = "http://example.com?" + str(r.content) |
30 | 49 | params = dict(parse.parse_qsl(parse.urlsplit(url).query)) |
| 50 | + |
31 | 51 | return params["b'access_token"] |
0 commit comments