From d9c2e47e9db30c6e9c7432be2354cf9399aaaed2 Mon Sep 17 00:00:00 2001 From: Peter Doan Date: Mon, 12 Mar 2018 15:41:44 -0700 Subject: [PATCH 1/3] Update force.go --- force/force.go | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/force/force.go b/force/force.go index 2ce0cec..ec9a3e3 100644 --- a/force/force.go +++ b/force/force.go @@ -89,11 +89,12 @@ func CreateWithAccessToken(version, clientId, accessToken, instanceUrl string) ( return forceApi, nil } -func CreateWithRefreshToken(version, clientId, accessToken, instanceUrl string) (*ForceApi, error) { +func CreateWithRefreshToken(version, clientId, clientSecret, refreshToken, environment string) (*ForceApi, error) { oauth := &forceOauth{ clientId: clientId, - AccessToken: accessToken, - InstanceUrl: instanceUrl, + clientSecret: clientSecret, + refreshToken: refreshToken, + environment: environment, } forceApi := &ForceApi{ @@ -104,13 +105,27 @@ func CreateWithRefreshToken(version, clientId, accessToken, instanceUrl string) oauth: oauth, } - // obtain access token - if err := forceApi.RefreshToken(); err != nil { - return nil, err + // Init oauth + if err := forceApi.oauth.AuthenticateWithRefreshToken(); err != nil { + +func CreateWithRefreshToken(version, clientId, clientSecret, refreshToken, environment string) (*ForceApi, error) { + oauth := &forceOauth{ + clientId: clientId, + clientSecret: clientSecret, + refreshToken: refreshToken, + environment: environment, } - // We need to check for oath correctness here, since we are not generating the token ourselves. - if err := forceApi.oauth.Validate(); err != nil { + forceApi := &ForceApi{ + apiResources: make(map[string]string), + apiSObjects: make(map[string]*SObjectMetaData), + apiSObjectDescriptions: make(map[string]*SObjectDescription), + apiVersion: version, + oauth: oauth, + } + + // Init oauth + if err := forceApi.oauth.AuthenticateWithRefreshToken(); err != nil { return nil, err } From 39ed7db4b8daffaef508d37599ad93f3b7f33c4f Mon Sep 17 00:00:00 2001 From: Peter Doan Date: Mon, 12 Mar 2018 15:43:01 -0700 Subject: [PATCH 2/3] Update oauth.go --- force/oauth.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/force/oauth.go b/force/oauth.go index eb39008..7d54e57 100644 --- a/force/oauth.go +++ b/force/oauth.go @@ -11,6 +11,7 @@ import ( const ( grantType = "password" + grantTypeRefreshToken = "refresh_token" loginUri = "https://login.salesforce.com/services/oauth2/token" testLoginUri = "https://test.salesforce.com/services/oauth2/token" @@ -60,6 +61,21 @@ func (oauth *forceOauth) Authenticate() error { "password": {fmt.Sprintf("%v%v", oauth.password, oauth.securityToken)}, } + return oauth.AuthenticateWithPayload(payload) +} + +func (oauth *forceOauth) AuthenticateWithRefreshToken() error { + payload := url.Values{ + "grant_type": {grantTypeRefreshToken}, + "client_id": {oauth.clientId}, + "client_secret": {oauth.clientSecret}, + "refresh_token": {oauth.refreshToken}, + } + + return oauth.AuthenticateWithPayload(payload) +} + +func (oauth *forceOauth) AuthenticateWithPayload(payload url.Values) error { // Build Uri uri := loginUri if oauth.environment == "sandbox" { From f12cb1812727a35c712149dd81f69ab20e7fb3ca Mon Sep 17 00:00:00 2001 From: Peter Doan Date: Mon, 19 Mar 2018 09:17:46 -0700 Subject: [PATCH 3/3] Update force.go --- force/force.go | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/force/force.go b/force/force.go index ec9a3e3..649ce0f 100644 --- a/force/force.go +++ b/force/force.go @@ -89,25 +89,6 @@ func CreateWithAccessToken(version, clientId, accessToken, instanceUrl string) ( return forceApi, nil } -func CreateWithRefreshToken(version, clientId, clientSecret, refreshToken, environment string) (*ForceApi, error) { - oauth := &forceOauth{ - clientId: clientId, - clientSecret: clientSecret, - refreshToken: refreshToken, - environment: environment, - } - - forceApi := &ForceApi{ - apiResources: make(map[string]string), - apiSObjects: make(map[string]*SObjectMetaData), - apiSObjectDescriptions: make(map[string]*SObjectDescription), - apiVersion: version, - oauth: oauth, - } - - // Init oauth - if err := forceApi.oauth.AuthenticateWithRefreshToken(); err != nil { - func CreateWithRefreshToken(version, clientId, clientSecret, refreshToken, environment string) (*ForceApi, error) { oauth := &forceOauth{ clientId: clientId,