Salesforce oAuth not working
Hello,

Love the library, looks really useful but I'm having an issue. I'm using fastify and trying to connect to Salesforce using the supplied provider, and overriding with the sandbox urls.

I have my provider configured like so...

```
export const config: GrantConfig = {
    defaults: {
        origin: 'http://localhost:3000',
        transport: 'session',
        response: ['tokens']
    },
      salesforce: {
        authorize_url: 'https://test.salesforce.com/services/oauth2/authorize',
        access_url: 'https://test.salesforce.com/services/oauth2/token',
        oauth: 2,
        key: '<KEY>',
        secret: '<SECRET>',
        scope: ['full']
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import fp from "fastify-plugin";
import grant from "grant";
import { config } from "../configs/grant";
const fastifyGrant = grant.fastify();

export default fp(async (fastify, opts) => {
  fastify.register(fastifyGrant(config));
});


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import { FastifyPluginAsync } from "fastify"

let route = '/connect/salesforce/callback'
const success: FastifyPluginAsync = async (fastify, opts): Promise<void> => {
  fastify.get(route, async function (request, reply) {
    return request.session.grant.response
  })
}

export default success;


```

Yet, in my callback... /connect/salesforce/callback

I call the response like request.session.grant.response
and it logs out like 

```
https://test.salesforce.com/services/oauth2/authorize?client_id=<CLIENT_ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fconnect%2Fsalesforce%2Fcallback&scope=full
```

I can access a sessionId like request.session.sessionId... but I don't think this is salesforce sessionId.

Clearly I am missing something. I was under the impression the library would handle the full oauth2 process, including exchanging the temporary code for an access token. Is there additional configuration needed on my part, or will I need to handle the exchange process myself?

Thanks
