Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
dropboxlogin
# YOU NEED TO INSERT YOUR APP KEY AND SECRET BELOW!
# Go to dropbox.com/developers/apps to create an app.
app_key = 'YOUR_APP_KEY'
app_secret = 'YOUR_APP_SECRET'
# access_type can be 'app_folder' or 'dropbox', depending on
# how you registered your app.
access_type = 'app_folder'
import webbrowser
from dropbox import client, rest, session
import keychain
import pickle
import console
def get_request_token():
console.clear()
print 'Getting request token...'
sess = session.DropboxSession(app_key, app_secret, access_type)
request_token = sess.obtain_request_token()
url = sess.build_authorize_url(request_token)
console.clear()
webbrowser.open(url, modal=True)
return request_token
def get_access_token():
token_str = keychain.get_password('dropbox', app_key)
if token_str:
key, secret = pickle.loads(token_str)
return session.OAuthToken(key, secret)
request_token = get_request_token()
sess = session.DropboxSession(app_key, app_secret, access_type)
access_token = sess.obtain_access_token(request_token)
token_str = pickle.dumps((access_token.key, access_token.secret))
keychain.set_password('dropbox', app_key, token_str)
return access_token
def get_client():
access_token = get_access_token()
sess = session.DropboxSession(app_key, app_secret, access_type)
sess.set_token(access_token.key, access_token.secret)
dropbox_client = client.DropboxClient(sess)
return dropbox_client
def main():
# Demo if started run as a script...
# Just print the account info to verify that the authentication worked:
print 'Getting account info...'
dropbox_client = get_client()
account_info = dropbox_client.account_info()
print 'linked account:', account_info
if __name__ == '__main__':
main()
@inactivist

This comment has been minimized.

Copy link

commented Sep 22, 2013

Greetings, and thanks for this gist.

I'm trying to use this with the DropBoxSync.py example... pardon my ignorance, but where may I find the 'keychain' module? I've searched but can't seem to locate it in any of the usual ways.

$ python DropboxSync.py 
Traceback (most recent call last):
  File "DropboxSync.py", line 8, in <module>
    import dropboxlogin # this code can be found here https://gist.github.com/4034526
  File "/home/inactivist/workspace/dropbox-sync/dropboxlogin.py", line 13, in <module>
    import keychain
ImportError: No module named keychain

(Python 2.7.3, Ubuntu 12.04 X64)

@TerryLansdown

This comment has been minimized.

Copy link

commented Jun 15, 2016

Update: A bit more reading and I fixed my problem by adding
#! python2 to the start of the DropBoxSync.py.

Hi, just upgraded to Pythonista v3 (many thanks, it's great so far!); fixed the print(statement)s but when I run this script (which has been working fine for several years) I'm getting a [401] 'Request token not found.' The app goes to the browser to authenticate with DB but seems to stall. Any ideas? Thanks.

@cclauss

This comment has been minimized.

Copy link

commented Aug 22, 2016

There is a Dropbox API v2 version that is compatible with Pythonista 3 discussed at https://forum.omz-software.com/topic/3221/request-token-not-found-from-dropbox-sync-in-pythonista-3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.