ekoapp/eko-oauth-sdk

此包的最新版本(1.1)没有可用的许可证信息。

1.1 2019-10-04 04:54 UTC

This package is not auto-updated.

Last update: 2024-09-27 02:31:36 UTC


README

Eko App 集成第三方应用的 OAuth 认证客户端。

先决条件

客户端应用必须先在 Eko 上注册。以下值,redirect_uriclient_idclient_secreteko_uri,将在注册过程中定义。

运行示例

  1. 编辑 /examples/app.php 中的 client_idclient_secretredirect_urieko_uri
  2. 通过浏览器访问 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 端点,并附带 statecode(认证代码)作为查询参数。客户端应用必须验证传入的状态与之前存储在会话中的状态。然后,客户端应用使用 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