c# - Error in dropNet's DropNetClient.GetAccessToken (Unhandled exception) -
i'm making dropbox downloader in .net , getting unhandled exception every time try run code. authenticated dropbox app.
here's code:
dropclient = new dropnetclient("xxxxxxxxxxxxx", "yyyyyyyyyyyyyy"); //btw in code have actual app key , secret dropclient.gettoken(); var accesstoken = dropclient.getaccesstoken(); dropclient.userlogin = new dropnet.models.userlogin { token = "myemail@gmail.com", secret = "mypass" };
the problem here you're not getting client credentials
here dropnet connection manager class
public class connectionmanager { private dropnetclient _client; public string getconnecturl(dropnetclient client, string callbackurl) { _client = client; var url = _client.buildauthorizeurl(callbackurl); return url; } public dropnetclient connect() { _client = new dropnetclient("token", "secret"); _client.gettoken(); return _client; } public dictionary<string, string> getaccesstoken(string tok, string secret) { _client = new dropnetclient("token", "secret", tok, secret); var token = _client.getaccesstoken(); var dic = new dictionary<string, string> {{"token", token.token}, {"secret", token.secret}}; return dic; } public dropnetclient connect(tokenandsecretmodel model) { _client = new dropnetclient("token", "secret", model.token, model.secret); var info = _client.accountinfo(); return _client; } } first call connect() getconnecturl(...) callback url needed know when call complete. redirect url returned, wait callback url receive response. when call getaccesstoken(token, secret) token , secret _client.userlogin.token , _client.userlogin.secret getaccesstoken return token , secret need save
to complete this, here controller
public class dropboxcontroller : controller { private readonly icommandchannel _commandchannel; private readonly iquerychannel _querychannel; private readonly usermodel _user; public dropboxcontroller(icommandchannel commandchannel, iquerychannel querychannel, usermodel user) { _commandchannel = commandchannel; _querychannel = querychannel; _user = user; } public actionresult index() { var con = new connectionmanager(); var dropclient = con.connect(); var callbackurl = request.url.scheme + "://" + request.url.authority + "/dropbox/callback"; var url = con.getconnecturl(dropclient, callbackurl); _commandchannel.execute(new savedropboxtempsecuritycommand { authtoken = dropclient.userlogin.token, token = dropclient.userlogin.token, secret = dropclient.userlogin.secret }); return redirect(url); //return view(new urlmodel {url = url}); } [httpget] public actionresult callback(string oauth_token) { tokenandsecretmodel model = _querychannel.execute(new getdropboxtemptokenquery{token = oauth_token}); var con = new connectionmanager(); var login = con.getaccesstoken(model.token, model.secret); _commandchannel.execute(new savedropboxlogincommand{authtoken = oauth_token, login = login}); return view(); } } public class urlmodel { public string url { get; set; } } you can see persist temporary credentials database, if wanted save them session. hope helps.
Comments
Post a Comment