2016-01-21 3 views
1

Я подсоединил веб-приложение для отдела продаж и успешно выполнили все шаги потока веб-сервера OAuth, чтобы получить access_token и связанной с ними информации: https://developer.salesforce.com/docs/atlas.en-us.api_placeorder.meta/api_placeorder/intro_understanding_web_server_oauth_flow.htmSalesforce REST API с PHP, INVALID_SESSION_ID после успешной аутентификации

Каждый шаг, кажется, верните ожидаемый набор результатов, указанных в документах, но когда я пытаюсь сделать запросы с маркером конечного доступа, я получаю сообщение об ошибке, указывающее, что мой идентификатор сеанса недействителен. Вот мой код:

// Execute a request for access_token and related info 
    $output = json_decode(curl_exec($ch)); 
    curl_close($ch); 
    var_dump($output); 

    // Extract token and instance_url from output 
    $sf_url = $output->instance_url . '/services/data/v35.0/'; 
    $sf_auth = 'Bearer ' . $output->access_token; 

    // Execute a new cURL request with auth values 
    $ci = curl_init(); 
    curl_setopt($ci, CURLOPT_URL, $sf_url); 
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ci, CURLOPT_HTTPHEADER, array(
     'Accept' => '*/*', 
     'Authorization' => $sf_auth, 
     'X-PrettyPrint' => 1 
    )); 

    $output2 = curl_exec($ci); 
    curl_close($ci); 
    var_dump($output2); 

Свалка от $ выходе дает:

object(stdClass)#194 (7) { 
["access_token"]=> string(112) "xxxxxxxxxxxxxxxx" 
["signature"]=> string(44) "xxxxxxxxxxxxxx" 
["scope"]=> string(3) "api" 
["instance_url"]=> string(27) "https://cs10.salesforce.com" 
["id"]=> string(68) "https://test.salesforce.com/id/xxxxx/xxxxx" 
["token_type"]=> string(6) "Bearer" 
["issued_at"]=> string(13) "1453358xxxxxx" } 

Свалка от $ output2 дает:

string(75) "[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]" 

Любая помощь здесь была бы оценена.

* UPDATE *

Я также попытался использовать поток аутентификации имени пользователя и пароля, и я получаю тот же результат. Я могу получить токен доступа, но я не могу запросить базу данных, а возвращаемая ошибка - это тот же INVALID_SESSION_ID.

Я использовал плагин Postman для хром, передал всю информацию для потока имени пользователя и пароля, и он работает для создания запросов. Я не уверен, что делается по-другому, похоже, что все передаваемые данные одинаковы.

ответ

0

Я нашел ответ, у меня был неправильный синтаксис для настройки заголовков завитушек. Я попытался передать значения как ассоциативный массив, но правильный способ таков:

curl_setopt($ci, CURLOPT_HTTPHEADER, array(
    'Accept: application/json', 
    'Authorization:' . $sf_auth, 
    'X-PrettyPrint:1' 
)); 
Смежные вопросы