在PHP中使用cURL登录Salesforce
我正在构建一个登录页面,我想从这里连接到我的salesforce.com帐户。 这个想法是,如果用户名/密码错误,我会将用户留在我的网站上,否则我会将其重定向到salesforce面板 为了检查用户名密码是否存在,我使用Salesforce PHP工具包。当我看到用户输入了合法帐户时,我使用cURL将用户名和密码发布到应该处理登录的表单中 下面是一些代码:在PHP中使用cURL登录Salesforce,php,curl,login,salesforce,Php,Curl,Login,Salesforce,我正在构建一个登录页面,我想从这里连接到我的salesforce.com帐户。 这个想法是,如果用户名/密码错误,我会将用户留在我的网站上,否则我会将其重定向到salesforce面板 为了检查用户名密码是否存在,我使用Salesforce PHP工具包。当我看到用户输入了合法帐户时,我使用cURL将用户名和密码发布到应该处理登录的表单中 下面是一些代码: $url = 'https://login.salesforce.com/'; $fields = array( 'userna
$url = 'https://login.salesforce.com/';
$fields = array(
'username' => urlencode($username),
'pw' => urlencode($pw),
'un' => urlencode($username),
'width' => urlencode($width),
'height' => urlencode($height),
'hasRememberUn' => urlencode(true),
'startURL' => urlencode(''),
'loginURL' => urlencode(''),
'loginType' => urlencode(''),
'useSecure' => urlencode(true),
'local' => urlencode(''),
'lt' => urlencode('standard'),
'qs' => urlencode(''),
'locale' => urlencode('uk'),
'oauth_token' => urlencode(''),
'login' => urlencode(''),
'serverid' => urlencode(''),
'display' => urlencode('page')
);
$fields_string ='';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
$ch = curl_init();
/* Set the url, number of POST vars, POST data */
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result = curl_exec($ch);
curl_close($ch);
我检查了salesforce.com登录页面的源代码,查看它需要哪些post值,并将其放入上面的代码中
问题是,每当我输入一个有效的帐户时,它都会将我重定向到salesforce.com的登录页面(因此我没有登录)
您试图访问需要salesforce.com登录的页面。如果您已经是系统的用户,请在下面登录
谁能告诉我我做错了什么
干杯 urlencode()不是对数据进行编码的合适方法,因为您没有在URL中传递数据
CURL可以获取一个数组,并自动将其中的数据转换为可发布的数据集。您不必自己进行编码。干脆
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
CURLOPT_POST
采用bool,而不是您发布的字段数
curl_setopt($ch, CURLOPT_POST, 1);
此外,如果服务使用cookie进行会话存储,则需要添加cookie jar。从
对于初始身份验证请求:
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
对于后续使用它的请求:
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
谢谢你的提示!但这并不能解决我的问题。