8
votes

I'm interacting with a custom APEX service which obviously require OAuth authentication. I can easily authenticate and authorise my application. Everything works fine.

However, the access token I receive tends to expire.

Of course, I can refresh it by sending a refresh_token. Sounds great.

The problem is I don't receieve a refresh_token in a response from SalesForce.

I do send requests to [instance].salesforce.com/services/oauth2/token, I also tried to using login.salesforce.com/services/oauth2/token, but I cannot find 'refresh_token' in the response. There's everything apart from it there!..

2
which oauth flow are you using? what's your callback uri ? - superfell
@superfell Everything was correct, apart from the scope. See my answer below. Thanks anyway :)! - Mike Borozdin

2 Answers

12
votes

Please check Selected OAuth Scopes section, which is needed to be enabled Perform requests on your behalf at any time in order to get the refresh token.

Сreate > Apps > API (Enable OAuth Settings) > Selected OAuth Scopes.

4
votes

I've solved the problem thanks to my wonderful colleague.

I should have added 'refresh_token' to the scope when retrieiving an auth code.