0

I am trying to authenticate Salesforce to NodeJS application.I getting error Like Error: invalid_grant - authentication failure .What else I am missing here. Do I need to do any configurations from salesforce side. Here is my code. Could Someone help me on this?

app.js
 var nforce = require('nforce');
    
    const client_id = '**'
    const client_secret = '****'
    const redirect_uri = 'https://***.sandbox.my.salesforce.com/services/oauth2/success'
    const sfdc_user = '*****'
    const sfdc_pass = '***'
    
    const credentials = {
        client_id :client_id,
        client_secret:client_secret,
        grant_type:"password",
        username:sfdc_user,
        password:sfdc_pass
    }
    
    async function getConnection(){
        const loginUrl = "https://***.sandbox.my.salesforce.com/services/oauth2/token";
       
        var org = nforce.createConnection({
            clientId: credentials.client_id,
            clientSecret: credentials.client_secret,
            redirectUri: redirect_uri,
        });
        console.log('org >>'+JSON.stringify(org));
        let oauth= await org.authenticate({ username: credentials.username, password: credentials.password});
        console.log('oauth >>'+oauth); //Couldnt get this console
        const access_token = oauth.access_token;
        const sf_auth_url = oauth.instance_url + '/services/data/v48.0/'
        sf_auth = {
            'Authorization':'Bearer ' + access_token, 
            'Content-type': 'application/json',
            'Accept-Encoding': 'gzip'
        }
        return { sf_auth,sf_auth_url }
    }
    
    module.exports = { getConnection } 

main.js
const f = require('./app');
const https = require('https')
const fs = require('fs')
const port = 3000

const server = https.createServer(function(req,res){
res.writeHead(200,{'Content-Type': 'text/html'})

res.end();
})

server.listen(port,function(error){
    if(error){
        console.log('Something Went Wrong!')
    }else{
        console.log('Server is listening on port '+port)
        f.getConnection();
    }
})
  • What do you see in Salesforce Setup, find your user's page, scroll all the way down to login history. Any failures? If you use your parameters in plain old Postman/SoapUI/curl similar to my https://stackoverflow.com/a/73873644/313628, does it work? – eyescream Oct 11 '22 at 17:29

1 Answers1

0

Usually when I have received this error it's due to not having the user's security security token appended to the end of the password field. This is the token sent to you via email when you first set your password or performed your last password reset. If you need to reset it you can do so via Personal Settings > Reset My Security Token

Reset Your Security Token

In the event it's not that, this username/password authentication documentation should help.

OAuth 2.0 Username-Password Flow for Special Scenarios

robbamyers
  • 21
  • 2