add oauth2 function