@@ -146,7 +146,7 @@ func (m *Manager) GetClient(clientID string) (cli oauth2.ClientInfo, err error)
146146// GenerateAuthToken 生成授权令牌
147147// rt 授权类型
148148// tgr 生成令牌的配置参数
149- func (m * Manager ) GenerateAuthToken (rt oauth2.ResponseType , tgr * oauth2.TokenGenerateRequest ) (token string , err error ) {
149+ func (m * Manager ) GenerateAuthToken (rt oauth2.ResponseType , tgr * oauth2.TokenGenerateRequest ) (authToken oauth2. TokenInfo , err error ) {
150150 cli , err := m .GetClient (tgr .ClientID )
151151 if err != nil {
152152 return
@@ -177,7 +177,7 @@ func (m *Manager) GenerateAuthToken(rt oauth2.ResponseType, tgr *oauth2.TokenGen
177177 if err != nil {
178178 return
179179 }
180- token = tv
180+ authToken = ti
181181 })
182182 if ierr != nil && err == nil {
183183 err = ierr
@@ -188,14 +188,14 @@ func (m *Manager) GenerateAuthToken(rt oauth2.ResponseType, tgr *oauth2.TokenGen
188188// GenerateAccessToken 生成访问令牌、更新令牌
189189// gt 授权模式
190190// tgr 生成令牌的参数
191- func (m * Manager ) GenerateAccessToken (gt oauth2.GrantType , tgr * oauth2.TokenGenerateRequest ) (access , refresh string , err error ) {
191+ func (m * Manager ) GenerateAccessToken (gt oauth2.GrantType , tgr * oauth2.TokenGenerateRequest ) (accessToken oauth2. TokenInfo , err error ) {
192192 if gt == oauth2 .AuthorizationCodeCredentials { // 授权码模式
193193 ti , terr := m .LoadAccessToken (tgr .Code )
194194 if terr != nil {
195195 err = terr
196196 return
197197 } else if ti .GetRedirectURI () != tgr .RedirectURI || ti .GetClientID () != tgr .ClientID {
198- err = ErrAuthTokenInvalid
198+ err = ErrAuthCodeInvalid
199199 return
200200 } else if verr := m .RemoveAccessToken (tgr .Code ); verr != nil { // 删除授权码
201201 err = verr
@@ -239,8 +239,7 @@ func (m *Manager) GenerateAccessToken(gt oauth2.GrantType, tgr *oauth2.TokenGene
239239 if err != nil {
240240 return
241241 }
242- access = av
243- refresh = rv
242+ accessToken = ti
244243 })
245244 if ierr != nil && err == nil {
246245 err = ierr
@@ -249,16 +248,25 @@ func (m *Manager) GenerateAccessToken(gt oauth2.GrantType, tgr *oauth2.TokenGene
249248}
250249
251250// RefreshAccessToken 更新访问令牌
252- func (m * Manager ) RefreshAccessToken (refresh , scope string ) (token string , err error ) {
253- ti , err := m .LoadRefreshToken ( refresh )
251+ func (m * Manager ) RefreshAccessToken (tgr * oauth2. TokenGenerateRequest ) (accessToken oauth2. TokenInfo , err error ) {
252+ cli , err := m .GetClient ( tgr . ClientID )
254253 if err != nil {
255254 return
255+ } else if tgr .ClientSecret != "" && tgr .ClientSecret != cli .GetSecret () {
256+ err = ErrClientInvalid
257+ return
258+ }
259+ ti , err := m .LoadRefreshToken (tgr .Refresh )
260+ if err != nil {
261+ return
262+ } else if ti .GetClientID () != tgr .ClientID {
263+ err = ErrRefreshInvalid
264+ return
256265 }
257- access := ti .GetAccess ()
258266 _ , ierr := m .injector .Invoke (func (stor oauth2.TokenStore , gen oauth2.AccessGenerate ) {
259- cli , cerr := m . GetClient ( ti . GetClientID ())
260- if cerr != nil {
261- err = cerr
267+ // 移除旧的访问令牌
268+ if verr := stor . RemoveByAccess ( ti . GetAccess ()); verr != nil {
269+ err = verr
262270 return
263271 }
264272 td := & oauth2.GenerateBasic {
@@ -273,18 +281,14 @@ func (m *Manager) RefreshAccessToken(refresh, scope string) (token string, err e
273281 }
274282 ti .SetAccess (tv )
275283 ti .SetAccessCreateAt (td .CreateAt )
276- if scope != "" {
284+ if scope := tgr . Scope ; scope != "" {
277285 ti .SetScope (scope )
278286 }
279- if verr := stor .RemoveByAccess (access ); verr != nil {
280- err = verr
281- return
282- }
283287 if verr := stor .Create (ti ); verr != nil {
284288 err = verr
285289 return
286290 }
287- token = tv
291+ accessToken = ti
288292 })
289293 if ierr != nil && err == nil {
290294 err = ierr
0 commit comments