ufo / client
Requires
- php: ^7.0.0
- ext-json: *
- beberlei/assert: ^3.2
- fig/http-message-util: ^1.1
- guzzlehttp/guzzle: ^6.3
- lcobucci/jwt: ^3.2
- psr/http-message: ^1.0
- ramsey/uuid: ^3.7
- uwkluis/enums: ^0.1.8
Requires (Dev)
- phpunit/phpunit: ^6.5 || ^7.4
- roave/backward-compatibility-check: ^3.0
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2020-11-20 10:06:48 UTC
README
本软件包可帮助连接到 UwKluis API。兼容 OpenAPI 的模式以及由 Swagger 生成的关于各个端点的文档可在此域根目录中找到。
结构
src/
src/Consumer
src/Exception
src/Organization
src/Traits
tests/
安装
通过 Composer
$ composer require ufo/client
用法
首先设置路由和控制器以处理 OAuth2 回调。以某种方式存储令牌响应的数据。
$config = new \Ufo\Client\Organization\Config(
'registered-client-name',
'registered-callback-url',
1,
'registered-client-secret',
['read-person-data', 'read-write-mortgages-data']
);
$guzzleClient = new GuzzleHttp\Client();
$organizationConnect = new Ufo\Client\Organization\Connect($config, $guzzleClient);
$accessTokenResponse = $organizationConnect->processResponse($psr7request);
$accessToken = $accessTokenResponse->getAccessToken();
$refreshToken = $accessTokenResponse->getRefreshToken();
$expiration = $accessTokenResponse->getExpiration();
将组织用户发送到 Oauth2 URL 以建立连接。将向回调路由发送请求作为响应。
/** @var $connect Ufo\Client\Organization\Connect */
echo '<a href="' . $connect->getAuthorizeUrl() . '">Connect</a>';
然后可以基于用户的电话号码和电子邮件地址向消费者发送邀请。您的客户端现在需要之前存储的访问令牌。结果响应对象将包含组织消费者 ID 和 UFO 消费者 ID(一个 UUID)。将这些存储起来以供将来请求使用。
$organizationConsumerId = 'JOHNSON_AMSTERDAM_001';
$consumerConnect = new \Ufo\Client\Consumer\Connect($config, $guzzleClient);
$connection = $consumerConnect->inviteConsumer('johnson@example.org', '0612345678');
$uwKluisConsumerId = $connection->getUwKluisConsumerId();
如果用户的组织已经建立了连接,则请求将失败,并抛出 \Ufo\Client\Exception\ConsumerConnectionConflict
异常,其中包含冲突的连接。这可以通过 \Ufo\Client\Exception\ConsumerConnectionConflict::getConflictingConnection()
提取。可以通过以下方式检索有关现有连接的信息,例如上述异常返回的信息:
/** @var $consumerConnect \Ufo\Client\Consumer\Connect */
/** @var $token \Lcobucci\JWT\Token */
/** @var $uwKluisConsumerId \Ramsey\Uuid\UuidInterface */
/** @var $connection \Ufo\Client\Consumer\Connect */
$connection = $consumerConnect->getConnectionStatus($token, $uwKluisConsumerId);
如果已向消费者发送了邀请,但他们无法接受因为它,要么电话号码或电子邮件地址不正确,要么他们找不到邀请,可以使用现有的连接 ID 发送新的邀请
/** @var $consumerConnect \Ufo\Client\Consumer\Connect */
/** @var $token \Lcobucci\JWT\Token */
/** @var $uwKluisConsumerId \Ramsey\Uuid\UuidInterface */
$consumerConnect->updateAndReinviteConsumer($token, $uwKluisConsumerId, 'newEmail@example.org', '0612345678');
首先使用组织的访问令牌、组织消费者 ID 和所需的消费者档案 JSON 模式版本请求当前消费者档案
$dossier = new \Ufo\Client\Consumer\Dossier($config, $guzzleClient);
$response = $dossier->getData(
$accessToken,
$uwKluisConsumerId,
1
);
$data = $response['data'];
如果您想更新消费者档案数据,首先将检索到的数据与您自己的数据合并,然后使用 updateData() 方法发送该数据。
/** @var array $mergedData */
$dossier->updateData(
$accessToken,
$uwKluisConsumerId,
$mergedData
1,
false
);
Webhooks
UwKluis API 提供了多个 webhook 选项,因此您的客户端可以在消费者连接更改时(例如,当消费者建立连接或更改授予的权限)或消费者档案更改时(无论是消费者还是其他客户端应用程序或组织)得到通知。在组织用户使用 OAuth2 建立连接后可以注册 webhook。ufo/webhook-client 软件包可以帮助在您的客户端应用程序中实现 webhook。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT。
安全性
如果您发现任何安全相关的问题,请通过 info@hypotheekbond.nl 发送电子邮件,而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。