我正在尝试使用curl连接到Marketo.com REST API。 我无法从身份服务获得回复。我只收到错误消息
" [curl] 6:无法解析主持人' MY_CLIENT_ENDPOINT.mktorest.com'
, 但我可以打印构建的URL并将其粘贴到浏览器地址栏中,这将提供access_token元素的预期响应。
我可以在php和终端中使用curl来访问我的Gmail帐户,以便curl能够访问https服务。 我已尝试将参数作为get请求发送到curl url中,并通过curl' s -F选项将其作为post请求声明
我的应用程序使用github上提供的dchesterton/marketo-rest-api,但我还尝试了一个简单的php curl请求来获取访问令牌。
private function getToken() {
$url = "$this->client_url/identity/oauth/token?grant_type=client_credentials&client_id=$this->client_id&client_secret=$this->client_secret";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$errors = curl_error($ch);
curl_close($ch);
file_put_contents($this->logDir . 'access_token_response' . date('Y-m-d') . '.txt', $url . "\n" . $response . "\n", FILE_APPEND);
if ($errors) {
file_put_contents($this->logDir . 'access_token_errors' . date('Y-m-d') . '.txt', $errors . "\n", FILE_APPEND);
}
return $response['access_token'];
}
同样,这失败并出现相同的错误但产生了一个完美形成的URL,我可以将其粘贴到浏览器中并获得有效的响应。 我也尝试使用post而不是像我提到的所有其他测试一样,这些已经在我的localhost和测试服务器上尝试过。
任何人都可以向我解释为什么会失败吗? Marketo会根据每个帐户阻止卷曲吗?
答案 0 :(得分:1)
我试图实现类似的东西,但我的代码不起作用。我不确定究竟是什么失败但是我尝试了你的代码,经过一些细微的修改似乎完美无缺:
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request_data));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$response = curl_exec($curl);
$errors = curl_error($curl);
curl_close($curl);
我希望这会有所帮助。