承接 vipkwd/oauth-sdk 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

vipkwd/oauth-sdk

Composer 安装命令:

composer require vipkwd/oauth-sdk

包简介

The SDK for VK-OAuth system.

README 文档

README

The SDK for VK-OAuth system.

Installing.

Install library via composer:

composer require vipkwd/oauth-sdk

Usage.

一. 初始化SDK

include_once('vendor/autoload.php');
use Vipkwd\SDK\OAuth\OAuth as SDK;
use Vipkwd\SDK\OAuth\Action as SdkAction;
use Vipkwd\SDK\OAuth\Restful as SdkRestful;
$instance = new SDK([
    'client_id'     => 'xxxx',
    'client_secret' => 'xxxx',
    'redirect_uri'  => null
    
    'response_type' => 'code',  // In the SDK, the default is `code`
    'scope'         => 'basic', // In the SDK, the default is `basic`
    'state'         => 'xyz',   // In the SDK, the default is `xyz`
]) :Object;

二、授权模式

1、授权码(authorization code)方式

1.1、获取登录链接:

$instance->getLoginUrl('code'): string;

1.2、回调页面捕获code换取token:

1.2.a、自动拉取token用户信息: Response Array: ["tokenData"=> array, "userInfo" => array, "clientId" => string]

$response = $instance->authorizeCodeType(true): array|void;

1.2.b、自动拉取token用户信息: Response Array: ["tokenData"=> array, "userInfo" => array, "clientId" => string]

$response = $instance->authorizeCodeType(true, function (array $tokenData, array &$userInfo, string $clientId) use ($session) {
	$userInfo['age'] = 18;
	$session->set('oauth', $tokenData);
	$session->set('user', $userInfo);
}): array|void;

1.2.c、不拉取token用户信息: Response Array: ["tokenData"=> array, "userInfo" => [], "clientId" => string]

$response = $instance->authorizeCodeType(false, function (array $tokenData, array $userInfo, string $clientId) use ($session) {
	$session->set('oauth', $tokenData);
	// $userInfo === []
}): array|void;

1.3、响应错误: is_array($response) === false 时,可使用 $instance->except 捕获错误消息Array

2、隐藏式(implicit)

2.1、获取登录链接:

$instance->getLoginUrl('token'): string;

2.2、授权成功,在回调地址中,用JS捕获地址锚点

(注意,令牌的位置是URL锚点(fragment),而不是查询字符串(querystring),这是因为 OAuth2.0 允许跳转网址是 HTTP 协议,因此存在"中间人攻击"的风险,而浏览器跳转时,锚点不会发到服务器,就减少了泄漏令牌的风险。)

3、凭证式(client credentials):适用于没有前端的应用(如:命令行)

注意:这种方式请求地址会暴露APP_SECRET,且给出的令牌,是针对第三方应用的,而不是针对用户的,即有可能多个用户共享同一个令牌。

3.1、获取凭证式授权(请求捕获JSON响应)

$instance->getTypesUrl('client'): string;

3.2、或者服务端用

// 响应(同授权码方式 1.2.xxx )
$instance->clientCredentialsType(bool $autoFetchUserInfo = false, ?\Closure $callback = null) 

4、密码式(password)

4.1、获取凭证式授权(请求捕获JSON响应)

$instance->getTypesUrl('password'): string;

4.2、或者服务端用

// 响应(同授权码方式 1.2.xxx )
$instance->passwordType(string $username, string $password, bool $autoFetchUserInfo = false, ?\Closure $callback = null) 

三、 CURD ...


SdkRestful::get(string $api, array $data = [], string $access_token):array
SdkRestful::post(string $api, array $data = [], string $access_token):array
SdkRestful::put(string $api, array $data = [], string $access_token):array
SdkRestful::delete(string $api, array $data = [], string $access_token):array
SdkRestful::options(string $api, array $data = [], string $access_token):array
SdkRestful::patch(string $api, array $data = [], string $access_token):array

四、 Cache && Store ...


// 获取本地缓存用户信息
SdkAction::getUserInfo():array

// 获取并刷新当前用户信息
SdkAction::getUserInfo(true):array

// 获取指定用户信息
SdkAction::getUserInfo(uid):array

// 获取用户ID
SdkAction::getUserId():integer|string|null

// 获取当前token对应的 应用ID
SdkAction::getClientId():string

// 获取请求token
SdkAction::getAccessToken():string|null

// 获取本地缓存用户信息
SdkAction::cacheOAuthUser(null):array

// 获取本地用户信息的指定字段
SdkAction::cacheOAuthUser(userInfokey):bool|mixed

// 本地缓存用户信息
SdkAction::cacheOAuthUser(array):bool

// 清空本地缓存用户
SdkAction::deleteOAuthUser():bool

// 获取本地缓存Token信息
SdkAction::cacheOAuthToken(null):array|null

// 本地缓存Token信息
SdkAction::cacheOAuthToken(array):bool

// 获取本地Token信息的指定字段
SdkAction::cacheOAuthToken(userInfokey):bool|mixed

// 清空本地缓存的Token
SdkAction::deleteOAuthToken():bool

vipkwd/oauth-sdk 适用场景与选型建议

vipkwd/oauth-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 05 月 28 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「http」 「oauth」 「sdk」 「token」 「vipkwd」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 vipkwd/oauth-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 vipkwd/oauth-sdk 我们能提供哪些服务?
定制开发 / 二次开发

基于 vipkwd/oauth-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 23
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-05-28