Add offline token option

Login needs to add an offline token flag to ensure a refresh token is returned by the token endpoint.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
This commit is contained in:
Derek McGowan 2016-03-04 14:32:51 -08:00
parent 5b8592b72c
commit efd7ea4624

View file

@ -116,6 +116,7 @@ type tokenHandler struct {
transport http.RoundTripper transport http.RoundTripper
clock clock clock clock
offlineAccess bool
forceOAuth bool forceOAuth bool
clientID string clientID string
scopes []Scope scopes []Scope
@ -149,6 +150,7 @@ type TokenHandlerOptions struct {
Transport http.RoundTripper Transport http.RoundTripper
Credentials CredentialStore Credentials CredentialStore
OfflineAccess bool
ForceOAuth bool ForceOAuth bool
ClientID string ClientID string
Scopes []Scope Scopes []Scope
@ -182,6 +184,7 @@ func NewTokenHandlerWithOptions(options TokenHandlerOptions) AuthenticationHandl
handler := &tokenHandler{ handler := &tokenHandler{
transport: options.Transport, transport: options.Transport,
creds: options.Credentials, creds: options.Credentials,
offlineAccess: options.OfflineAccess,
forceOAuth: options.ForceOAuth, forceOAuth: options.ForceOAuth,
clientID: options.ClientID, clientID: options.ClientID,
scopes: options.Scopes, scopes: options.Scopes,
@ -346,6 +349,10 @@ func (th *tokenHandler) fetchTokenWithBasicAuth(realm *url.URL, service string,
reqParams.Add("scope", scope) reqParams.Add("scope", scope)
} }
if th.offlineAccess {
reqParams.Add("offline_token", "true")
}
if th.creds != nil { if th.creds != nil {
username, password := th.creds.Basic(realm) username, password := th.creds.Basic(realm)
if username != "" && password != "" { if username != "" && password != "" {