First cut with working OAuth2 integration