How can I use the grant_type=password oauth flow with salesforce.com?

Symmetric picture Symmetric · Jun 5, 2012 · Viewed 41.9k times · Source

I'm trying to get an authorization token using the Username-Password flow (as described in the final section of this article).

I'm sending the following request (using Python's httplib, in case that's relevant):

https://login.salesforce.com/services/oauth2/token

POST data:

username=<un>&client_secret=<consumer_secret>&password=<pw+token>&grant_type=password&client_id=<consumer_key>

And getting the response:

400 Bad Request
{"error":"unsupported_grant_type","error_description":"grant type not supported"}

Is the password grant_type really unsupported, or am I missing something? It seems to give this error even when I'm sending a grant_type that definitely does work (such as authorization_code).

Note that I've tried the suggestions in the answer here, and they don't work for me.

Answer

superfell picture superfell · Jun 5, 2012

Typically this is because the content-type header has not been set to the correct value, it should be application/x-www-form-urlencoded.

Also make sure your parameters are correctly encoded (especially if you're building the POST payload by hand).