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

oauth, passwords, salesforce

Solution

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).

Problem

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.

Original source