YMQOAuthTokenGetData.class.php
4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
require_once dirname(__FILE__) . '/YMQOAuthTokenRedisHelper.class.php';
/**
* 获取存放在Redis的访问令牌的操作类
*/
class YMQOAuthTokenGetData
{
/**
* 存放Redis 对象
* @var object
*/
private static $redis;
/**
* 创建 Redis 对象
*/
private static function _createRedis()
{
if (!isset(self::$redis))
{
self::$redis = new YMQOAuthTokenRedisHelper();
}
else
{
// 测试此处有 socket 过期现象
$ping = @self::$redis->mRedis->ping();
// 判断连接是否断开
if ($ping != '+PONG')
{
self::$redis = new YMQOAuthTokenRedisHelper();
}
}
}
/**
* 获取访问令牌方法
* [老方法, 已不再使用]
*
* @param string $token 指定的来访令牌
* @return mexed (null | array)
* @example
* YMQOAuthTokenGetData::get( "e434b93937v" );
* return array (
* 'clientId' => '*******',
* 'scope' => '*****',
* );
*/
public static function get($token)
{
self::_createRedis();
$result = null;
// 数据存在: 返回字符串 , 不存在: 返回 false
$tempResult = self::$redis->mRedis->get(strval($token));
if ($tempResult != false && is_string($tempResult))
{
$result = json_decode($tempResult, true);
}
return $result;
}
/**
* Hase 操作: 获取用户访问应用的令牌
*
* @param string $userId
* @param string $appId
* @return mixed (false | string)
* @example
* YMQOAuthTokenGetData::hGet("106090", '1000000')
*/
public static function hGet($userId, $appId)
{
self::_createRedis();
// 获取存在的哈希值对应键的值 。如果哈希表不存在,或键不存在,则返回FALSE
$result = self::$redis->mRedis->hGet(strval($userId), strval($appId));
return $result;
}
/**
* Hash 操作: 获取用户的所有访问应用的令牌 [new]
* @param string $userId
* @return array
* @example
* YMQOAuthTokenGetData::hVals("106090")
*/
public static function hVals($userId)
{
self::_createRedis();
// 返回一个数组, 哈希中对应的所有值
$result = self::$redis->mRedis->hVals(strval($userId));
return $result;
}
/**
* 自定义 操作: 验证用户访问应用的令牌是否有效 [new]
* @param string $userId
* @return mixed (null | array)
* @example
* YMQOAuthTokenGetData::hFind("106090", "*****");
*/
public static function hFind($userId, $token)
{
self::_createRedis();
// 此变量用于存放返回结果
$result = null;
// 返回一个数组, 哈希中对应的所有值
$tempResult = self::$redis->mRedis->hVals(strval($userId));
if (is_array($tempResult) && count($tempResult) > 0)
{
// 过滤掉数组中的空值
$tempResult = array_filter($tempResult);
if (is_array($tempResult) && count($tempResult) > 0)
{
// // 存放数据为JSON格式, 先解析为数组,再查找.
// foreach ($tempResult as $data)
// {
// $data = @json_decode($data, true);
// if (in_array($token, $data))
// {
// $result = $data;
// break;
// }
// }
// 只存放令牌数据的情况
if (($key = array_search($token, $tempResult)) !== null)
{
$result['oauth_token'] = $tempResult[ $key ];
}
// 释放变量
unset($tempResult);
}
}
return $result;
}
}
?>