SnsAccessToken.java
3.19 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
/**
* Copyright (c) 2011-2015, Unas 小强哥 (unas@qq.com).
* <p/>
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.jfinal.weixin.sdk.api;
import java.io.Serializable;
import java.util.Map;
import com.jfinal.weixin.sdk.utils.JsonUtils;
import com.jfinal.weixin.sdk.utils.RetryUtils.ResultCheck;
/**
* SnsAccessToken
* 封装 access_token
*/
public class SnsAccessToken implements ResultCheck, Serializable
{
private static final long serialVersionUID = 6369625123403343963L;
private String access_token; // 正确获取到 access_token 时有值
private Integer expires_in; // 正确获取到 access_token 时有值
private String refresh_token; //
private String openid; //
private String scope; //
private String unionid; //
private Integer errcode; // 出错时有值
private String errmsg; // 出错时有值
private Long expiredTime; // 正确获取到 access_token 时有值,存放过期时间
private String json;
public SnsAccessToken(String jsonStr)
{
this.json = jsonStr;
try
{
@SuppressWarnings("unchecked")
Map<String, Object> temp = JsonUtils.parse(jsonStr, Map.class);
access_token = (String) temp.get("access_token");
expires_in = getInt(temp, "expires_in");
refresh_token = (String) temp.get("refresh_token");
openid = (String) temp.get("openid");
unionid = (String) temp.get("unionid");
scope = (String) temp.get("scope");
errcode = getInt(temp, "errcode");
errmsg = (String) temp.get("errmsg");
if (expires_in != null)
expiredTime = System.currentTimeMillis() + ((expires_in - 5) * 1000);
} catch (Exception e)
{
throw new RuntimeException(e);
}
}
public String getJson()
{
return json;
}
private Integer getInt(Map<String, Object> temp, String key) {
Number number = (Number) temp.get(key);
return number == null ? null : number.intValue();
}
public boolean isAvailable()
{
if (expiredTime == null)
return false;
if (errcode != null)
return false;
if (expiredTime < System.currentTimeMillis())
return false;
return access_token != null;
}
public String getAccessToken()
{
return access_token;
}
public Integer getExpiresIn()
{
return expires_in;
}
public String getRefresh_token()
{
return refresh_token;
}
public String getOpenid()
{
return openid;
}
public String getScope()
{
return scope;
}
public Integer getErrorCode()
{
return errcode;
}
public String getErrorMsg()
{
if (errcode != null)
{
String result = ReturnCode.get(errcode);
if (result != null)
return result;
}
return errmsg;
}
public String getUnionid()
{
return unionid;
}
@Override
public boolean matching() {
return isAvailable();
}
}