A sample client, written in C#, is available to demonstrate this process on Github. This is a C# project created under Visual Studio 2010, written against .Net 4, and is a Winforms Application.
The key steps demonstrated by this client are:
- Embed identitysso.betfair.com into your application
- Handle the login method and retrieval of a session token from the cookies
- Handle the keep alive method
- Handle the logout method
How it works
Upon start-up, the URL of the API login page is assigned to the web browser control:
//Give embedded web browser Betfair api login page URL System.Uri u = new Uri(LogonURL);
When the web browser control receives data an event is triggered and the following function called:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //On embeded web browser response get cookie string cookie = this.webBrowser1.Document.Cookie; if (cookie != null) this.ParseCookie(cookie); //If successfull login start KeepAlive if (!m_LoggedOut && !m_KeepAliveTimer.Enabled) { webBrowser1.Visible = false; SetMessage("Logon successfull\r\n SSOID=" + m_SSOID); this.StartKeepAlive(); } }
Upon successful login the cookie is parsed for the SSOID. The webrowser control made invisible and the SSOID displayed in a TextBox. The keep-alive timer is started
private void StartKeepAlive() { m_KeepAliveTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnKeepAliveTimer); // Set the Interval to 15 mins. m_KeepAliveTimer.Interval = 1000 * 60 * 15; m_KeepAliveTimer.Enabled = true; }
Above the StartKeepAlive function simply starts a 15 minute timer which invokes function OnKeepAliveTimer.
OnKeepAliveTimer sends a Keep Alive message.
A message to this effect is then displayed.
Upon hitting the Logout button the following event handler is invoked:
private void btnLogout_Click(object sender, EventArgs e) { m_KeepAliveTimer.Enabled = false; m_KeepAliveTimer.Close(); m_LoggedOut = true; System.Uri u = new Uri(LogoutURL); this.webBrowser1.Url = u; this.webBrowser1.Navigate(u); SetMessage("Logged out"); }
The keep alive timer is closed. The logout url is sent and a Logged out message is displayed.