It's the last day of the year.
2016 has been amazing, and I had the chance to learn a lot of new stuff and play around with many technologies: and even with just a couple of days left, this year got me with a new and interesting project that I just learned about.
Meet Jasonette a new and surprisingly fun way of thinking mobile apps.
Basically, Jasonette is a precompiled iOS/Android app running on the mobile devices that translates plain JSON files in native components.
Everything in your app becomes a json object. In there you define templates, actions, logic: the app will take care of everything for you.
Being interested in such a new concept, I started to implement an OAuth login flow, since pretty much all of my projects leverage on an external authentication.
I first started to implement it on Android: I came up with an hackish, non-multiplatform version (with Android-only intent url schemes) and started to investigate an alternative that worked on both Android and iOS.
Looking around the iOS code, I saw an undocumented OAuth action: it was exactly what I needed, and I modified my JSON app in order to have it working with this new system.
Looking back in the Android project though, I noticed that this feature was entirely missing: I decided to join the project forum and discuss this with the project mantainers.
There I found a very nice community, open and welcoming: there I started to think about contributing on the project and started to develop a bit.
I first released the OAuth Facebook login example, that you can find on this repository.
Did you know there's an undocumented $oauth action on Jasonette? Here's a Facebook login example written by snada! https://t.co/Nzu3w1fxFq
— JASON (@jasonclient) 22 dicembre 2016
It's a Ruby on Rails 5 api-mode application, both serving the json code for the application and as backend for an hypothetical online service: it features a full login flow and a protected endpoint to demonstrate the process.
This is the end result:
I pretty much have all of the OAuth 2 flow already implemented for Android at the moment, but it's not yet ready to be released: as soon as I figure out some blocking points that I need to discuss about with Ethan, the project founder, I'll make a pull request.
In the process of the Android implementation, I also fixed a minor issue on iOS, regarding the callback phase of the authentication process, giving me the opportunity to make my first public contribution on a open source project.
So far, I had a lot of fun with this journey, and I'd like to keep following this project, that seems promising and very well thought.
If you are interested, give it a shot, it's super easy to set up and test it: also, there are a lot of issues that need to be fixed, especially on Android.
Have a happy new year!