-
Notifications
You must be signed in to change notification settings - Fork 321
/
commandline-oauth-scopes.py
85 lines (73 loc) · 3.25 KB
/
commandline-oauth-scopes.py
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
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env python3
import dropbox
from dropbox import DropboxOAuth2FlowNoRedirect
'''
It goes through an example of requesting a starting scope,
and requesting more throughout the process
'''
APP_KEY = ""
APP_SECRET = ""
auth_flow = DropboxOAuth2FlowNoRedirect(APP_KEY,
consumer_secret=APP_SECRET,
token_access_type='offline',
scope=['files.metadata.read'])
authorize_url = auth_flow.start()
print("1. Go to: " + authorize_url)
print("2. Click \"Allow\" (you might have to log in first).")
print("3. Copy the authorization code.")
auth_code = input("Enter the authorization code here: ").strip()
try:
oauth_result = auth_flow.finish(auth_code)
# authorization has files.metadata.read scope only
assert oauth_result.scope == 'files.metadata.read'
except Exception as e:
print('Error: %s' % (e,))
exit(1)
# If an application needs write scopes now we can request the new scope with the auth flow
auth_flow2 = DropboxOAuth2FlowNoRedirect(APP_KEY,
consumer_secret=APP_SECRET,
token_access_type='offline',
scope=['account_info.read'])
authorize_url = auth_flow2.start()
print("1. Go to: " + authorize_url)
print("2. Click \"Allow\" (you might have to log in first).")
print("3. Copy the authorization code.")
auth_code = input("Enter the authorization code here: ").strip()
try:
oauth_result = auth_flow2.finish(auth_code)
# authorization has account_info.read scope only
assert oauth_result.scope == 'account_info.read'
except Exception as e:
print('Error: %s' % (e,))
exit(1)
# If an application needs a new scope but wants to keep the existing scopes,
# you can add include_granted_scopes parameter
auth_flow3 = DropboxOAuth2FlowNoRedirect(APP_KEY,
consumer_secret=APP_SECRET,
token_access_type='offline',
scope=['files.content.read', 'files.content.write'],
include_granted_scopes='user')
authorize_url = auth_flow3.start()
print("1. Go to: " + authorize_url)
print("2. Click \"Allow\" (you might have to log in first).")
print("3. Copy the authorization code.")
auth_code = input("Enter the authorization code here: ").strip()
try:
oauth_result = auth_flow3.finish(auth_code)
print(oauth_result)
# authorization has all granted user scopes
assert 'account_info.read' in oauth_result.scope
assert 'files.metadata.read' in oauth_result.scope
assert 'files.content.read' in oauth_result.scope
assert 'files.content.write' in oauth_result.scope
print(oauth_result.scope) # Printing for example
except Exception as e:
print('Error: %s' % (e,))
exit(1)
with dropbox.Dropbox(oauth2_access_token=oauth_result.access_token,
oauth2_access_token_expiration=oauth_result.expires_at,
oauth2_refresh_token=oauth_result.refresh_token,
app_key=APP_KEY,
app_secret=APP_SECRET) as dbx:
dbx.users_get_current_account()
print("Successfully set up client!")