【发布时间】:2014-09-05 20:02:44
【问题描述】:
我已经在我的应用程序和 Salesforce 之间使用 PHP 中 REST API 的 Web 服务器流成功实现了 oAuth2 身份验证过程,并且在连接到 Developer Edition 类型的 Salesforce 帐户时效果很好。
但是,当尝试连接测试或生产环境类型的 Salesforce 帐户时它不起作用:我无法使用 Salesforce 提供的授权代码获取访问令牌,因为 Salesforce 给了我这个错误:
{"error_description":"身份验证失败","error":"invalid_grant"}
有人知道为什么它不起作用吗?
这是我所做的:
第 1 步 => 确定 => 将用户重定向到 Salesforce
第 2 步 => 确定 => 用户登录
第 3 步 => 确定 => 使用授权码将用户重定向到我们的应用程序
第 4 步 => 不正常 => 我们使用 Salesforce 提供的授权代码请求访问令牌
我们已经尝试了所有方法(也许没有:D):我们已经检查了我们端和客户端的所有安全配置,我们已经检查了 IP 限制(没有使用 IP 限制),我们已经给出了我们的应用程序“完全访问”,但仍然没有运气。我们收到的授权码编码正确,看起来很正常。
有人知道为什么它不起作用吗?
您知道我是否需要验证我们连接的应用程序才能供测试或产品类型的 Salesforce 帐户使用?
非常感谢您提前提供的所有帮助。 干杯 昆汀
注意:我猜这是以下问题的重复,但没有答案:(https://developer.salesforce.com/forums?id=906F00000009AFvIAM
我也看到了这个,但它没有解决我的问题Salesforce Authentication Failing
编辑 1:
这是我使用的代码(在我们的例子中,$instance 是 'https://test.salesforce.com'):
$url = $instance . '/services/oauth2/token?format=json';
$postFields = array(
'code' => $code,
'grant_type' => 'authorization_code',
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret,
'redirect_uri' => $this->redirectURL);
// Create the CURL object.
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($handle, CURLOPT_POST, TRUE);
curl_setopt($handle, CURLOPT_POSTFIELDS, $postFields);
【问题讨论】:
标签: php salesforce