You need to sign in to do that
Don't have an account?
אביב קסוטו
"INVALID_SESSION_ID" error after using "access token" REST API PHP
I am trying to retrieve data from salesforce using the REST api and CURL in PHP.
I perform the authentication request and recieve an 'instance_url' and 'access_token' but after performing a query request using those, i receive an "INVALID_SESSION_ID" error.
my authentication request code:
function get_sf_auth_data() { $post_data = array( 'grant_type' => 'password', 'client_id' => 'xxxxxxxxxxxxxxxxxxxxxx', //My client id (xxx... for this example) 'client_secret' => '111111111111', // My client secret (111... for this example) 'username' => 'my_user_name', 'password' => 'my_user_password' ); $headers = array( 'Content-type' => 'application/x-www-form-urlencoded;charset=UTF-8' ); $curl = curl_init('https://login.salesforce.com/services/oauth2/token'); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); $response = curl_exec($curl); curl_close($curl); // Retrieve and parse response body $sf_access_data = json_decode($response, true); echo '*********' . $sf_response_data['instance_url'] . '********'; echo '*********' . $sf_response_data['access_token'] . '********'; return $sf_access_data; }My query request code:
function get_user_sfid($sf_access_data, $user_id_number){ $sql = "SELECT Id, Name FROM Account WHERE ID__c = '$user_id_number'"; $url = $sf_access_data['instance_url'] . '/services/data/v20.0/query/?q=' . urlencode($sql); $headers = array( 'Authorization' => 'OAuth ' . $sf_access_data['access_token'] ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $json_response = curl_exec($curl); curl_close($curl); var_dump($json_response); // This prints out the response where i got the error $response = json_decode($json_response); return $response['id']; }The response to the query request as is:
[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]I have also tried using this guide (http://developer.force.com/cookbook/recipe/interact-with-the-forcecom-rest-api-from-php) as refrence but it uses an "authorization_code" authentication and not a password one.
I've found the solution! The way i was defining my "headers" array was wrong.
instead of defining it:
I should have been defining it:
I get my query results now and everything is working. Thanks for all the help :)All Answers
I've found the solution! The way i was defining my "headers" array was wrong.
instead of defining it:
I should have been defining it:
I get my query results now and everything is working. Thanks for all the help :)