お問い合わせフォームとSalesForceのAPI連携を実施しております。
実施内容は下記の通りですが、curl_errorにより接続が出来ません。
// エラー内容 URL : https://test.salesforce.com/services/oauth2/token Status : 0 response : error = , error_description = curl_error : error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure curl_errno : 35
// 連携用PHPファイルに記述した内容 // APIToolkit require_once ('oauth/oauth.php'); define("DATABASEDOTCOM_CLIENT_ID", "Salesforce REST APIで接続するアプリケーションの「コンシューマ鍵」"); define("DATABASEDOTCOM_CLIENT_SECRET", "Salesforce REST APIで接続するアプリケーションの「コンシューマの秘密」"); define("DATABASEDOTCOM_CLIENT_USERNAME", "Salesforce REST API接続用のSalesforceユーザ"); define("DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD", "Salesforce REST API接続用のSalesforceユーザのパスワード"); define("DATABASEDOTCOM_HOST", "Salesforce REST APIエンドポイント"); ///// Salesforce REST API接続用の設定 $CACHE_DIR = '/home/homepage/tmp/session'; $CALLBACK_URL = 'https://www.test.co.jp/contact/'; // Salesforce REST API接続用のOauthインスタンスを生成 $oauth = new oauth(DATABASEDOTCOM_CLIENT_ID, DATABASEDOTCOM_CLIENT_SECRET, $CALLBACK_URL, DATABASEDOTCOM_HOST, $CACHE_DIR); // Salesforce REST API接続にあたりSalesforceへの認証を実行 $oauth->auth_with_password(DATABASEDOTCOM_CLIENT_USERNAME, DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD); // 以下は省略
// oauth.phpの内容(一部を抜粋) class oauth { public $client_id; public $client_secret; public $login_url; public $token_url; public $callback_url; public $access_token; public $refresh_token; public $instance_url; public $cache_dir; public $error = FALSE; public $error_msg = array(); public function __construct($client_id, $client_secret, $callback_url, $login_url = 'https://login.salesforce.com', $cache_dir = '.'){ $this->client_id = $client_id; $this->client_secret = $client_secret; $this->callback_url = $callback_url; $this->login_url = $login_url; $this->token_url = $login_url . "/services/oauth2/token"; $this->cache_dir = $cache_dir; } public function auth_with_password($username, $password, $lifetime = 60){ $this->refresh_cache_on_filesystem($lifetime); if ($this->error){ return(FALSE); } $this->read_cache_from_filesystem(); if ($this->error){ return(FALSE); } if (empty($this->access_token) || empty($this->instance_url)){ $fragment = "grant_type=password" . "&client_id=" . $this->client_id . "&client_secret=" . $this->client_secret . "&username=" . $username . "&password=" . urlencode($password); $response = $this->send($fragment); if ($this->error){ // ここでFALSEがリターンされている。 return(FALSE); } $this->access_token = $response['access_token']; $this->refresh_token = ''; $this->instance_url = $response['instance_url']; $this->save_to_filesystem(); if ($this->error){ return(FALSE); } } return(TRUE); } private function send($fragment){ $curl = curl_init($this->token_url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $fragment); curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1); $response = json_decode(curl_exec($curl), true); $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($status == 400 && $response['error_description'] == 'expired authorization code') { //access code has been expired $this->set_error('new code required'); } elseif ( $status != 200 ) { // エラー内容 $this->set_error("<h1>Curl Error</h1><p>URL : $this->token_url </p><p>Status : $status</p><p>response : error = " . $response['error'] . ", error_description = " . $response['error_description'] . "</p><p>curl_error : " . curl_error($curl) . "</p><p>curl_errno : " . curl_errno($curl) . "</p>"); } curl_close($curl); return($response); } }
質問:
エラー内容「error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure」を解消する方法が分かりません。どのような原因が考えられますでしょうか?また、curlのバージョンに関しては下記の通りです。よろしくお願いいたします。
参考にしたサイト:
https://qiita.com/na0AaooQ/items/157c28a80948c4b97bed
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 09:18