Help with authenticating (VB.net)

First some background. I am pretty new to ESI and creating any applications with web connectivity. My coding experience is with VB6 for industrial applications and I am moving into VB.net since VB6 is basically on life support. With that in mind I can be considered a complete idiot when it comes to online connectivity/processes, and all my experience has been with desktop applications, not web.

What I have managed to do is make an application, in VB.net, that can make calls to the public ESI, pull the JSON and parse what I want. I have managed to get a few functions written than will do the donkey work for me in getting the information then parsing/filtering so I end up with only what I want (e.g. Lowest Sell price in Jita 4-4 for a given itemID)

Now I have that functionality nailed down I am wanting to try and use some non-public data and looked into implementing an SSO function. I have got as far as being able to create the URL that can be opened in a web-browser and go through the motions of logging in, selecting a character then it returning the one-use token to be used in the last steps of verification. I cannot however manage to get the callback to work automatically, which is a minor issue as I can copy it out the returned url. I have looked at the ‘Lightweight Local HTTP Server’ option as per documentation (https://eveonline-third-party-documentation.readthedocs.io/en/latest/sso/nonbrowserapps.html) but honestly it has gotten my head spinning. I ended up skipping this step for now as I can copy the token manually out of the url.

My next, even bigger issue, is the final step of sending the one-use token back to CCP. I cannot for the life of me find something that works for the final process. I always get back Error 400 ‘bed request’ in the HTTP Listener examples.

Does anyone know of any decent walkthroughs and/or .net libs that help me with these final steps to get authenticated? I seem to be going around in circles.

As far as I know, I’m the only other person that has openly admitted to programming in Visual Basic. So I’m not sure you’ll get much help there.

However, feel free to look through my code on IPH: https://github.com/EVEIPH/EVE-IPH ESI.vb is my main code for ESI calls. I built all my own stuff and don’t use a library.

I think I had your same issue and you need to call local host with just http (not https). Also, if you are using Internet Explorer or Edge, vb.net doesn’t seem to want to open the browser correctly with process.start. Still can’t figure out why.

I hope that helps.

https://github.com/esi/esi-docs/blob/master/docs/sso/sso_authorization_flow.md Would be the more up to date docs.

From what it sounds like, without having any examples, you are sending an invalid request. I’m not sure how its done in VB, but really all the SSO process is, is some HTTP requests. If the code after signing in is like #code=xxx then that is the implicit flow, which could cause some issues. Providing some examples of your requests (with sensitive info removed ofc) would be more helpful.

It turns out I was mixing together the two versions of the authentication! I have managed to get it to work but only by manually pasting the callback auth code into the application to close the loop. Otherwise I am managing to get refresh tokens, etc. all working using the V1 of authorisation, it is just getting the authcode from the callback automatically that is messing me up.

I will look at your code @Zifrian, a quick glance looks like there is a listener I can rework into my code to finish off my own application. And yes, VB.net seems to be the runt in terms of programming languages, actually surprising to see someone else making applications in VB.net.

1 Like

I learned it years ago working for a telcom company (VB5!) and just started building an EVE app with VB.net since express was free. Got too far along to switch to C# so here I am.

Let me know if you have any questions, be glad to help.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.