github.com/optim-corp/cios-golang-sdk@v0.5.1/sdk/service/authorization/authorization.go (about) 1 package srvauth 2 3 import ( 4 "context" 5 "io/ioutil" 6 "log" 7 "net/http" 8 "net/url" 9 "strings" 10 11 cnv "github.com/fcfcqloow/go-advance/convert" 12 13 sdkmodel "github.com/optim-corp/cios-golang-sdk/model" 14 ) 15 16 func (self *CiosAuth) GetAccessTokenByRefreshToken() (sdkmodel.AccessToken, sdkmodel.Scope, sdkmodel.TokenType, sdkmodel.ExpiresIn, error) { 17 if self.debug { 18 log.Printf("%s", "Refresh AccessToken.") 19 } 20 debug := self.ApiClient.GetConfig().Debug 21 self.ApiClient.GetConfig().Debug = false 22 response, _, err := self.ApiClient.AuthApi. 23 RefreshToken(self.withHost(context.Background())). 24 GrantType("refresh_token"). 25 RefreshToken(self.ref). 26 ClientId(self.clientId). 27 ClientSecret(self.clientSecret). 28 Scope(self.scope). 29 Execute() 30 if err != nil { 31 return "", "", "", 0, err 32 } 33 self.ApiClient.GetConfig().Debug = debug 34 return response.AccessToken, response.Scope, response.TokenType, int(response.ExpiresIn), nil 35 36 } 37 38 func (self *CiosAuth) GetAccessTokenOnClient() (sdkmodel.AccessToken, sdkmodel.Scope, sdkmodel.TokenType, sdkmodel.ExpiresIn, error) { 39 if self.debug { 40 log.Printf("%s", "Refresh AccessToken.") 41 } 42 responseData := struct { 43 AccessToken string `json:"access_token"` 44 TokenType string `json:"token_type"` 45 ExpiresIn int `json:"expires_in"` 46 Scope string `json:"scope"` 47 }{} 48 values := url.Values{} 49 values.Add("grant_type", "client_credentials") 50 values.Add("client_id", self.clientId) 51 values.Add("client_secret", self.clientSecret) 52 values.Add("scope", self.scope) 53 resp, _ := http.Post( 54 self.Url+"/connect/token", 55 "application/x-www-form-urlencoded", 56 strings.NewReader(values.Encode()), 57 ) 58 defer resp.Body.Close() 59 60 body, err := ioutil.ReadAll(resp.Body) 61 if err != nil { 62 return "", "", "", 0, err 63 } 64 65 err = cnv.UnMarshalJson(body, &responseData) 66 if err != nil { 67 return "", "", "", 0, err 68 } 69 return responseData.AccessToken, responseData.Scope, responseData.TokenType, responseData.ExpiresIn, nil 70 } 71 72 func (self *CiosAuth) GetAccessTokenOnDevice() (sdkmodel.AccessToken, sdkmodel.Scope, sdkmodel.TokenType, sdkmodel.ExpiresIn, error) { 73 if self.debug { 74 log.Printf("%s", "Refresh AccessToken.") 75 } 76 responseBody := struct { 77 AccessToken string `json:"access_token"` 78 TokenType string `json:"token_type"` 79 ExpiresIn int `json:"expires_in"` 80 Scope string `json:"scope"` 81 }{} 82 values := url.Values{ 83 "grant_type": []string{"urn:ietf:params:oauth:grant-type:jwt-bearer"}, 84 "client_id": []string{self.clientId}, 85 "client_secret": []string{self.clientSecret}, 86 "scope": []string{self.scope}, 87 } 88 89 response, err := http.Post(self.Url+"/connect/token", "application/x-www-form-urlencoded", strings.NewReader(values.Encode())) 90 if err != nil { 91 return "", "", "", 0, err 92 } 93 defer response.Body.Close() 94 if err := cnv.UnMarshalJson(response.Body, &responseBody); err != nil { 95 return "", "", "", 0, err 96 } 97 return responseBody.AccessToken, responseBody.Scope, responseBody.TokenType, responseBody.ExpiresIn, nil 98 }