Foursquare–part 2 of 4
After successfully connecting to Foursquare with an Web application, the problem is what to don with a Desktop application. The most simple desktop application is a Console . The first idea that I have had is to start a browser, let the user pass his credentials and retrieve data from browser.
Something like this
1 2 3 4 5 | string urlAuth = this .sharpSquare.GetAuthenticateUrl(urlSOA + "home/redirect4sq/" + this .thisRequest); Process p = new Process(); p.StartInfo.FileName = getDefaultBrowser(); p.StartInfo.Arguments = urlAuth; p.Start(); |
However, I have been not capable of taking data from the WebBrowser process. So the solution is this one:
The Console program open a web browser to the Foursquare web site with a redirect to http://fsq.apphb.com/ and GUID. The user enters his credentials to FourSquare site. Then Foursquare is redirecting to the http://fsq.apphb.com/ -and the http://fsq.apphb.com/ memorizes a GUID and his token. Then the Console reads from http://fsq.apphb.com/ the token ( has the GUID) and it is set.
The code looks like this:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | public void AuthenticateNewWebBrowser() { string urlAuth = this .sharpSquare.GetAuthenticateUrl(urlSOA + "home/redirect4sq/" + this .thisRequest); Process p = new Process(); p.StartInfo.FileName = getDefaultBrowser(); p.StartInfo.Arguments = urlAuth; p.Start(); Thread.Sleep(5000); AuthenticateToken(); } //retrieving from website public void AuthenticateToken() { var newUrl = urlSOA + "api/Values/ClientToken/" + this .thisRequest; var code = new WebClient().DownloadString(newUrl).Replace( "\"" , "" ); SetAccessCode(code); } |
Next time I will do code for solving same problem – but from inside the program( without needing to launch a new Process)
Leave a Reply