繁体   English   中英

成功验证后,使用PHP,INVALID_SESSION_ID的Salesforce REST API

[英]Salesforce REST API with PHP, INVALID_SESSION_ID after successful authentication

我将Web应用程序连接到Salesforce,并成功遵循Web服务器OAuth流程中的所有步骤来获取access_token和相关信息: https : //developer.salesforce.com/docs/atlas.en-us.api_placeorder.meta/api_placeorder /intro_understanding_web_server_oauth_flow.htm

似乎每个步骤都将返回文档中指定的预期结果集,但是当我尝试使用最终访问令牌发出请求时,出现一条错误消息,提示我的会话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);

$ output的转储给出:

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"}]"

在这里的任何帮助将不胜感激。

*更新*

我也尝试使用用户名密码身份验证流,但得到的结果相同。 我可以获得访问令牌,但是无法查询数据库,并且返回的错误是相同的INVALID_SESSION_ID。

我使用了适用于chrome的Postman插件,为用户名-密码流传递了所有相同的信息,并且它可用于进行查询。 我不确定正在做的事情有何不同,似乎所有传递的数据都是相同的。

我找到了答案,设置弯头的语法错误。 我试图将值作为关联数组传递,但是正确的方法是这样的:

curl_setopt($ci, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Authorization:' . $sf_auth,
    'X-PrettyPrint:1'
));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM