OAuth 授权流程图: 浏览器 应用服务器 授权服务器 打开应用页面 返回应用页面 下面开始授权流程 GET /oauth/connect?appid=xx&scope=xxx&redirect_uri=xxx 返回错误页面 返回授权页面 返回登录页面 alt [检查 appid, redirect_uri, scope 参数,任意参数有错,则返回错误页面] [检查当前用户是否已经登录授权服务器,若已登录,则给用户展示确认授权页面] [如果用户当前没有登录,则展示登录页面,并且用户可以切换注册、重置密码等功- 能] 这里假设用户没有登录,于是展示登录页面 登录页面(页面上应该明确标注这是授权页,同时有些 APP 可能还会要求定制页面主题) POST /api/auth/login {...} LOGIN SUCCESS 此时登录成功,跳转到授权页面,用户点击按钮, 触发以下操作(这一步可以不用 API,而是用直接访问) GET /oauth/accept?appid=xxx&scope=xxx&redirect_uri=xxx 后端对于这个请求,同样要检查这些参数是否正确、当前是否已经登录,不再赘述 302 $redirect_uri?code=xxx 至此授权流程结束 下面开始获取授权用户信息流程 浏览器发起跳转,跳转到 $redirect_uri?code=xxx 访问 $redirect_uri?code=xxx POST /api/oauth/userinfo {code=xxx} {nickname: xxx, avatar: xxx} 完成登录逻辑 LOGIN SUCCESS 返回错误信息 授权失败,提示用户错误信息 alt [授权码校验成功] [授权码校验失败] 至此流程结束 浏览器 应用服务器 授权服务器