php - 我想在 php 中使用 api access_token 验证用户登录
问题描述
我有这个演示链接来获取用户登录的用户验证的访问令牌。
http://testapp.test/app.php/v1/verifyUser?username=admin&password=password&grant_type=password&client_id=6_20jeacfmdv0gwgg4kcgw44swwkoo8ogog8g4gwggwo0wko08ow&client_secret=38311bdlv884wc0ws4g048k0ieei8oc4oc0cmswok8w33o0s9e
使用邮递员发送请求后,我在响应中获取访问令牌
<?xml version="1.0"?>
<user_info>
<access_token>NGI20QFmNDE1HAUjYWEyMjVlbsryNWRjNGJmOGI5ZDNiLhA1OTI5MjkzZjIwZmE4YmYxOHYwMTQ3NTUzYTdmMg</access_token>
<expires_in>86400</expires_in>
<token_type>bearer</token_type>
<scope/>
<refresh_token>AWMxYmVhYmFkNDJkOTVjYjM1YWQwNTVmOTcwYmIyKaR98TE1Y2E5KLZkZTY0ZjA3Mjc3MzQzOeGmTTUzODlmYw</refresh_token>
<user_id>007</user_id>
<username>admin</username>
<email>email@admin.com</email>
<firstname>admin</firstname>
<lastname>admin</lastname>
<ip_address>xxx.xxx.xx.xxx</ip_address>
<last_login>
<date>2019-07-12 18:21:27.000000</date>
<timezone_type>4</timezone_type>
<timezone>Central</timezone>
</last_login>
</user_info>
我想使用 access_token 身份验证系统使用 PHP 登录网站中的用户。
解决方案
这是我的问题的解决方案
$url = 'http://testapp.test/app.php/v1/verifyUser?username=admin&password=password&grant_type=password&client_id=6_20jeacfmdv0gwgg4kcgw44swwkoo8ogog8g4gwggwo0wko08ow&client_secret=38311bdlv884wc0ws4g048k0ieei8oc4oc0cmswok8w33o0s9e';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
$data = curl_exec($ch);
//echo $data;
if(curl_errno($ch))
{
print curl_error($ch);
}
else
{
curl_close($ch);
$xml = simplexml_load_string($data);
$json = json_encode($xml);
$var= json_decode($json,true);
}
if(isset($var["error"]))
{
echo "error";
}
else
{
$_SESSION['signed_in'] = true;
$_SESSION['sno'] = $var["user_id"];
$_SESSION['first_name'] = $var["firstname"];
}
希望这个答案能帮助那些有同样问题的人。
推荐阅读
- ios - 无法使用 swift 在 AVPlayerViewController 上捕捉滑动手势
- javascript - 如果元素是数组,如何删除对象的元素?
- javascript - 在 Angular 6 中保存之前为每个图像添加标题
- c# - 如何使用套接字编程(TCP)将两个图像从服务器发送到客户端?
- integration-testing - 如何在 Cloud Foundry 中进行集成测试?
- javascript - 如何使用 Cypress.io 检查元素是否存在
- javascript - 无法在谷歌数据工作室的散点图中绘制比例和轴
- sql-server - 声明日期变量
- azure-cosmosdb - 返回数组中特定对象的内容 — CosmosDB
- http - 如何使用 css/jquery 选择器从 jmeter 中的 tr 中捕获 id 的值?