2011-07-27 24 views
0

salesforce.comアカウントに接続するログインページを作成しています。 アイデアは、ユーザー名とパスワードが間違っていると、私は自分のウェブサイトにユーザーを残し、そうでなければ、彼をsalesforceパネルにリダイレクトするということです。PHPでcURLを使用して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のログインページのソースを視察しました。

問題は、いつでもI入力の有効なアカウント、それはあなたが必要とするページにアクセスしようとしました

言ってsalesforce.comの(私はログインしていないのです)、ログインページに私をリダイレクトするということですセールスフォース・ドットコムのログイン。あなたが既にシステムのユーザーであれば、以下にログインしてください。

私が間違っていることを教えてもらえますか?

乾杯!

答えて

1

URLにデータを渡していないため、urlencode()はデータをエンコードする適切なメソッドではありません。

CURLは配列をとり、その中のデータをPOST可能なデータセットに自動的に変換できます。自分でエンコードする必要はありません。単に行う

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
+0

先端をありがとう!しかし、それは私の問題を解決しません。 – David

0

CURLOPT_POSTは、あなたが投稿しているフィールドの数ではなく、boolをとります。

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"); 
関連する問題