我对用 PHP 编写的 onelogin api 有一个简单的 curl 请求。该请求适用于我的终端参数,我可以登录我的用户,但是我在服务器上运行的 php 版本会生成访问令牌,但是当我尝试任何 GET 或 POST 请求时会出现 401 错误。我尝试了各种卷曲参数。一个 html 表单提交到托管在 lampp 堆栈上的这个 php 页面。似乎不起作用。下面是带有简单 GET 请求的 php 脚本。非常感谢您对此的任何帮助:
<?php
//form will post these variables for post request
//$username = $_POST['uname'];
//$password = $_POST['pwd'];
$data = array("grant_type" => "client_credentials");
$data_string = json_encode($data);
$ch = curl_init('https://api.us.onelogin.com/auth/oauth2/token');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Authorization: client_id:XXX, client_secret:XXX",
"Content-Type: application/json")
);
//execute post
$result = curl_exec($ch);
if(!curl_exec($ch)){
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}
//parsse out bearer token and set header
$json = json_decode($result, true);
$a_token = $json['data'][0]['access_token'];
$bearer_token = "Authorization: bearer: ". $a_token;
curl_setopt($ch, CURLOPT_URL, "https://api.us.onelogin.com/api/1/users");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($bearer_token));
//execute
$result2 = curl_exec($ch);
if(!curl_exec($ch)){
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}
//close connection
curl_close($ch);
echo $result2;
?>