OAuth 2.0 explained with examples