此数据 / api
用于与ThisData API交互的PHP客户端。
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^6.0
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2024-09-26 00:21:40 UTC
README
使用此客户端消费ThisData.com的REST API。需要至少PHP5.5。
安装
使用composer
composer require thisdata/api
快速开始
使用工厂返回配置为默认设置的ThisData\Api\ThisData实例。
use ThisData\Api\ThisData; $apiKey = '<API_KEY>'; $thisData = ThisData::create($apiKey);
⚠️ 不要将API密钥提交到源代码控制!请使用环境变量,或者您可能有一个配置解决方案,允许您在本地配置中存储秘密而不共享。
每个端点将根据端点提供的功能具有不同的方法。例如,事件端点可以跟踪成功的登录尝试。
API文档
API端点的文档可以在此找到
跟踪事件
使用$thisData实例获取事件端点的实例。
$endpoint = $thisData->getEventsEndpoint();
然后跟踪事件
$ip = $_SERVER['REMOTE_ADDR']; $user = [ 'id' => 'johntitor', 'name' => 'John Titor', 'email' => 'john.titor@thisdata.com', 'mobile' => '+64270000001' ]; $userAgent = $_SERVER['HTTP_USER_AGENT']; $endpoint->trackLogIn($ip, $user, $userAgent); $verb = 'my-custom-verb'; $endpoint->trackEvent($verb, $ip, $user, $userAgent);
当登录尝试失败时
$ip = $_SERVER['REMOTE_ADDR']; $user = [ 'id' => 'johntitor', 'authenticated' => false ]; $userAgent = $_SERVER['HTTP_USER_AGENT']; $endpoint->trackEvent(EventsEndpoint::VERB_LOG_IN_DENIED, $ip, $user, $userAgent);
当您使用多租户应用程序时
$ip = $_SERVER['REMOTE_ADDR']; $user = [ 'id' => 'johntitor' ]; $userAgent = $_SERVER['HTTP_USER_AGENT']; $source = [ 'name' => 'SubCustomer 1' ] $endpoint->trackLogIn($ip, $user, $userAgent, $source);
验证用户
当即将发生敏感操作时,例如在完成登录过程之前,您可以验证用户是否是他们所说的那个人,并检查其账户被攻击者冒充的风险。如果他们呈现中等或高风险,则强制他们提供双因素认证代码。
$endpoint = $thisData->getVerifyEndpoint(); $ip = $_SERVER['REMOTE_ADDR']; $user = [ 'id' => 'johntitor' ]; $userAgent = $_SERVER['HTTP_USER_AGENT']; $response = $endpoint->verify($ip, $user, $userAgent); if ($response['risk_level'] != "green") { # Ask for Two Factor Authentication code } else { # Everything is OK }
获取事件列表(审计日志)
您可以从API获取分页、可过滤的事件数组。该方法接受任何在文档中描述的参数:http://help.thisdata.com/docs/v1getevents
例如,返回用户最近的10个登录
事件
$endpoint = $thisData->getEventsEndpoint(); $events = $endpoint->getEvents(["verb" => "log-in", "user_id" => 112233, "limit" => 10]);
高级
有几个配置选项可以修改库的行为方式。通过使用Builder,您可以设置这些配置选项。
use ThisData\Api\Builder; $builder = new Builder($apiKey); // Configure the builder here. See below for more details. // ... // e.g. $builder->setAsync(false); // $builder->setExpectJsCookie(true); // ... $thisData = $builder->build();
同步请求
默认情况下,请求是异步发送到服务器的。如果不需要此操作,或者更喜欢同步通信,则配置Builder以使用同步请求。
$builder->setAsync(false);
ThisData的JavaScript库
ThisData的JavaScript跟踪代码是可选的,但如果包含在页面中,将添加一个名为__tdli
的cookie。如果您正在使用可选的JavaScript库,此库将自动获取该cookie。您还应该告诉API每个请求都应包含一个cookie
$builder->setExpectJsCookie(true);
网络配置
如果您需要更多控制网络设置,例如使用代理,则在构建时配置客户端设置。
$builder->setClientOption('proxy', 'tcp://:8125');
如果您想看到HTTP请求的详细输出,请在Guzzle中启用调试模式。
$builder->setClientOption('debug', true);
此处可以配置Guzzle HTTP客户端支持的所有设置,包括curl选项。
直接访问HTTP客户端
如果您需要直接与Guzzle HTTP客户端交互以发送自定义请求,则可以从端点检索配置的实例。
/** @var GuzzleHttp\Client $guzzle */ $guzzle = $events->getClient();
或者,您可以手动实例化客户端,而无需添加端点抽象层。
$client = new ThisData\Api\Client('<API_KEY>'); // An extension of the GuzzleHttp\Client class $client->post('events', ['body' => '{"ip":"127.0.0.1"}']);
贡献
感谢您的帮助!首先,通过派生存储库开始。然后确保测试通过。
composer install
./vendor/bin/phpunit
进行您的更改,添加测试覆盖率,并检查测试是否仍然通过。然后提交一个PR!:)