重构oauth