ekoapp / eko-oauth-sdk
此包的最新版本(1.1)没有可用的许可证信息。
1.1
2019-10-04 04:54 UTC
Requires
- firebase/php-jwt: ^5.0
- rmccue/requests: ^1.7
This package is not auto-updated.
Last update: 2024-09-27 02:31:36 UTC
README
Eko App 集成第三方应用的 OAuth 认证客户端。
先决条件
客户端应用必须先在 Eko 上注册。以下值,redirect_uri
、client_id
、client_secret
和 eko_uri
,将在注册过程中定义。
运行示例
- 编辑
/examples/app.php
中的client_id
、client_secret
、redirect_uri
和eko_uri
。 - 通过浏览器访问
https:///path/to/project/examples/app.php
安装
composer require ekoapp/eko-oauth-sdk
用法
查看 examples/app.php
了解使用的完整流程。
1. 初始化
use EkoApp\OAuth\EkoOAuthClient; $client = new EkoOAuthClient(); $client->setClientId(CLIENT_ID); $client->setClientSecret(CLIENT_SECRET); $client->setRedirectUri(REDIRECT_URI); $client->setEkoUri(EKO_URI);
2. 认证
要认证用户,客户端应用必须将用户重定向到以下 URL。
- 创建重定向 URL 到 Eko 认证端点
$_SESSION['state'] = $client->createState(); // DO NOT forget to store this state into the session to validate it when Eko redirect back to your endpoint $authEndpointUrl = $client->createAuthenticateUrl($_SESSION['state']);
3. 获取令牌和用户信息
客户端应用必须设置一个端点,该端点必须与预定义的 redirect_uri
匹配。认证成功或失败后,Eko 将将用户重定向回此 redirect_uri
端点,并附带 state
和 code
(认证代码)作为查询参数。客户端应用必须验证传入的状态与之前存储在会话中的状态。然后,客户端应用使用 code
获取访问令牌,并使用访问令牌获取用户信息。如果状态验证失败,不要使用 code
。
- 验证状态(如果失败,将抛出异常)
$client->validateState($_SESSION['state'], $state);
- 获取令牌
$token = $client->requestToken($code);
// Retreiving values from access token $accessToken = $token->getAccessToken(); $refreshToken = $token->getRefreshToken(); $tokenType = $token->getTokenType(); $expiresIn = $token->getExpiresIn(); $scopes = $token->getScopes(); $rawIdToken = $token->getRawIdToken(); $idToken = $token->getIdToken();
- 获取 ID 令牌
$idToken = $token->getIdToken();
// Retreiving values from id token $firstName = $idToken->firstname; $lastName = $idToken->lastname; $email = $idToken->email;
- 获取用户信息
$userInfo = $client->requestUserInfo($token->getAccessToken());
// Retreiving values from user info $userId = $userInfo->_id; $firstName = $userInfo->firstname; $lastName = $userInfo->lastname; $email = $userInfo->email; $networkId = $userInfo->networkId;
或检索用户信息的快捷方式 ...
- 通过
code
获取用户信息
$userInfo = $client->requestUserInfoByCode($code);
4. 刷新令牌
$token = $client->requestTokenByRefreshToken($token->getRefreshToken());
发布
作者
- Jura Boonnom - 初始工作 - jura-b