syntax = "v1" import "../base.api" type ( // OAuth log in request | OAuth 登录请求 // swagger:parameters OauthLogin OauthLoginReq { // Provider name | 服务提供商名称 // // In: query // Required: true // Max Length: 40 // Example: [google, github, facebook] Provider string `form:"provider" validate:"max=40"` } // OAuth login return auth url | OAuth登录返回提供商登录页地址 OauthLoginResp { // Auth URL | 提供商登录地址 AuthUrl string `json:"authUrl"` } // OAuth log in by code request | OAuth 直接登录请求 OauthLoginByCodeReq { // Code | 一次性code Code string `json:"code"` // Provider name | 服务提供商名称 // // Example: [wechat,google] Provider string `json:"provider" validate:"max=40"` } // OAuth log in by phone code request | OAuth 手机号码登录请求 OauthLoginByPhoneCodeReq { // AuthCode | 登录Code,非必填,为了平台兼容性 AuthCode string `json:"authCode,optional"` // Code | 一次性code Code string `json:"code"` // Provider name | 服务提供商名称 // // Example: [wechat,google] Provider string `json:"provider" validate:"max=40"` } // Log in request | 普通登录请求 LoginReq { // Log in subject | 登录主体(用户名/邮箱/手机号码)| 作用于验证码时,不支持用户名 Subject string `json:"subject"` // Credentials | 登录凭证 Credentials string `json:"credentials"` // Platform | 当前登录平台 Platform string `json:"platform"` // Captcha ID which store in redis | 图形验证码编号, 存在redis中 // // Required: true // Max length: 32 CaptchaId string `json:"captchaId,optional" validate:"len=32"` // The Captcha which users input | 用户输入的验证码 // // Required: true // Max length: 4 Captcha string `json:"captcha,optional" validate:"len=4"` } // LoginResp | 登录返回数据 // swagger:model LoginResp LoginResp { // TwoFactorType | 两步验证类型,空字符串表示无需两步验证 TwoFactorType string `json:"twoFactorType"` // Token | Token信息 Token LoginTokenInfo `json:"token,optional"` } // LoginTokenInfo | Token数据 // swagger:model LoginTokenInfo LoginTokenInfo { // User ID | 用户ID UID int64 `json:"uid,string"` // Token Type | Token类型 Authorization: {token_type} {access_token} // // Example: [Bearer] TokenType string `json:"token_type"` // Access Token | Jwt-Token AccessToken string `json:"access_token"` // Expires At | 过期具体时间,时间戳格式 ExpiresAt int64 `json:"expires_at"` // Scope | 授权范围,逗号分割 Scope string `json:"scope,omitempty,optional"` } // Register request | 注册请求 RegisterReq { // Username | 用户名 Username *string `json:"username,optional"` // Email | 邮箱 Email *string `json:"email,optional"` // PhoneNumber | 手机号码 PhoneNumber *string `json:"phoneNumber,optional"` // Credentials | 凭证 Credentials string `json:"credentials"` // Code | 验证码 Code *string `json:"code,optional"` // Captcha ID which store in redis | 图形验证码编号, 存在redis中 // // Required: true // Max length: 32 CaptchaId string `json:"captchaId,optional" validate:"len=32"` // The Captcha which users input | 用户输入的验证码 // // Required: true // Max length: 6 Captcha string `json:"captcha,optional" validate:"len=4"` } ) @server( group: auth prefix: /api/auth ) service api { // Oauth log in | Oauth 第三方登录,获取登录地址(通常针对PC网页登录,APP端自行获取code) @handler oauthLogin get /oauth/login (OauthLoginReq) returns (OauthLoginResp) // Oauth log in by code | Oauth 第三方登录,客户端自行获取code进行登录 @handler oauthLoginByCode post /oauth/login/byCode (OauthLoginByCodeReq) returns (LoginResp) // Oauth log in by phone code | Oauth 第三方登录,客户端获取换取手机号的code进行登录 @handler oauthLoginByPhone post /oauth/login/byPhone (OauthLoginByPhoneCodeReq) returns (LoginResp) // Oauth log in callback route | Oauth 登录返回调接口,即redirect_uri @handler oauthCallback get /oauth/login/callback returns (LoginResp) // Log in | 密码登录 @handler login post /login (LoginReq) returns (LoginResp) // Log in by code | 验证码登录,手机x邮箱 @handler loginByCode post /login/byCode (LoginReq) returns (LoginResp) // Register | 注册 @handler register post /register (RegisterReq) returns (BaseID) }