refactor v1 oauth2 api