I am using web2py v2.4.5 and dropbox v1.5.1 for a project and I get
"invalid token" error. I have a default controller with 3 methods. index()
takes the user to the authorization url with a callback to welcome(). This
part works fine. When I make a call to the third method userinfo() I get
"invalid token" error. See attached source code.
Can anyone help me with this? Thank you
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.
import dropbox
from gluon import current
def index():
if not session.request_token_key:
sess = _dropbox_session()
request_token = sess.obtain_request_token()
session.request_token_key = request_token.key
session.request_token_secret = request_token.secret
url = sess.build_authorize_url(request_token, "http://localhost:8000/dropbox/default/welcome")
redirect(url)
else:
redirect('welcome')
def welcome():
client = _dropbox_client()
return dict(message=T("Welcome " + client.account_info()['display_name']))
def userinfo():
client = _dropbox_client()
return dict(message=T("Welcome " + client.account_info()['display_name']))
## utils
def _dropbox_session():
APP_KEY = 'XXXXXXXXXXXXX'
APP_SECRET = 'XXXXXXXXXXXXX'
ACCESS_TYPE = 'dropbox'
sess = dropbox.session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
return sess
def _dropbox_client():
sess = _dropbox_session()
if not session.request_token_key:
#redirect user to login
return None
elif not current.session.access_token_key:
sess.set_request_token(session.request_token_key, session.request_token_secret)
access_token = sess.obtain_access_token(sess.request_token)
current.session.access_token_key = access_token.key
current.session.access_token_secrest = access_token.secret
else:
sess.set_request_token(session.request_token_key, session.request_token_secret)
sess.set_token(current.session.access_token_key, current.session.access_token_secret)
client = dropbox.client.DropboxClient(sess)
return client