[英]Log in Salesforce using cURL in PHP
我正在建立一個登錄頁面,從這里我想連接到我的salesforce.com帳戶。 想法是,如果用戶名/密碼錯誤,我會將用戶留在我的網站上,否則我會將其重定向到salesforce面板。
要檢查用戶名密碼是否存在,我使用Salesforce PHP Toolkit。 當我看到用戶輸入了合法帳戶時,我使用cURL將用戶名和密碼發布到應該處理登錄的表單中。
這是一些代碼:
$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登錄頁面的源,以查看它需要什么帖子值,並將其放在上面的代碼中。
問題是,每當我輸入有效的帳戶時,它會將我重定向到salesforce.com的登錄頁面(因此我沒有登錄)
您試圖訪問需要salesforce.com登錄的頁面。 如果您已經是該系統的用戶,請在下面登錄。
誰能告訴我我在做什么錯?
干杯!
urlencode()不是正確的數據編碼方法,因為您沒有在URL中傳遞數據。
CURL可以采用一個數組,並將其中的數據自動轉換為可發布POST的數據集。 您不必自己進行編碼。 簡單地做
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
CURLOPT_POST
需要一個布爾值,而不是您要發布的字段數。
curl_setopt($ch, CURLOPT_POST, 1);
另外,如果該服務使用cookie進行會話存儲,則需要添加一個cookie jar。 來自http://curl.haxx.se/libcurl/php/examples/cookiejar.html
對於初始身份驗證請求:
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
對於使用它的后續請求:
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.