diff options
author | 2022-07-28 16:43:42 +0200 | |
---|---|---|
committer | 2022-07-28 16:43:42 +0200 | |
commit | fc81e6443a175c184f76b54b8a00758d095fe402 (patch) | |
tree | f5955f08959b8c3657f122255e79da3e5dea531f | |
parent | [feature] add 'state' oauth2 param to /oauth/authorize (#730) (diff) | |
download | gotosocial-fc81e6443a175c184f76b54b8a00758d095fe402.tar.xz |
[bugfix] remove <= 0 `expires_in` from oauth token response (#731)
* remove <= 0 expired_in from oauth token response
* go fmt
-rw-r--r-- | internal/oauth/server.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/internal/oauth/server.go b/internal/oauth/server.go index d520b19ec..bb863b740 100644 --- a/internal/oauth/server.go +++ b/internal/oauth/server.go @@ -133,6 +133,23 @@ func (s *s) HandleTokenRequest(r *http.Request) (map[string]interface{}, gtserro } data := s.server.GetTokenData(ti) + + if expiresInI, ok := data["expires_in"]; ok { + switch expiresIn := expiresInI.(type) { + case int64: + // remove this key from the returned map + // if the value is 0 or less, so that clients + // don't interpret the token as already expired + if expiresIn <= 0 { + delete(data, "expires_in") + } + default: + err := errors.New("expires_in was set on token response, but was not an int64") + return nil, gtserror.NewErrorInternalError(err) + } + } + + // add this for mastodon api compatibility data["created_at"] = ti.GetAccessCreateAt().Unix() return data, nil |