View Javadoc
1   package com.foxinmy.weixin4j.model;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   import com.foxinmy.weixin4j.cache.Cacheable;
7   
8   /**
9    * access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token,正常情况下access_token有效期为7200秒,
10   * 重复获取将导致上次获取的access_token失效
11   *
12   * @className Token
13   * @author jinyu(foxinmy@gmail.com)
14   * @date 2014年4月5日
15   * @since JDK 1.6
16   * @see <a
17   *      href="https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183&token=&lang=zh_CN">微信公众平台获取token</a>
18   * @see <a
19   *      href="http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8">微信企业号的主动模式</a>
20   */
21  public class Token implements Cacheable {
22  
23  	private static final long serialVersionUID = -7564855472419104084L;
24  
25  	/**
26  	 * 获取到的凭证
27  	 */
28  	private String accessToken;
29  	/**
30  	 * 凭证有效时间,单位:毫秒
31  	 */
32  	private long expires;
33  	/**
34  	 * token创建的时间,单位:毫秒
35  	 */
36  	private long createTime;
37  	/**
38  	 * 扩展信息
39  	 */
40  	private Map<String, String> extra;
41  
42  	/**
43  	 * 永不过期、创建时间为当前时间戳的token对象
44  	 *
45  	 * @param accessToken
46  	 *            凭证字符串
47  	 */
48  	public Token(String accessToken) {
49  		this(accessToken, -1);
50  	}
51  
52  	/**
53  	 * 有过期时间、创建时间为当前时间戳的token对象
54  	 *
55  	 * @param accessToken
56  	 *            凭证字符串
57  	 * @param expires
58  	 *            过期时间 单位毫秒
59  	 */
60  	public Token(String accessToken, long expires) {
61  		this(accessToken, expires, System.currentTimeMillis());
62  	}
63  
64  	/**
65  	 *
66  	 * @param accessToken
67  	 *            凭证字符串
68  	 * @param expires
69  	 *            过期时间 单位毫秒
70  	 * @param createTime
71  	 *            创建时间戳 单位毫秒
72  	 */
73  	public Token(String accessToken, long expires, long createTime) {
74  		this.accessToken = accessToken;
75  		this.expires = expires;
76  		this.createTime = createTime;
77  		this.extra = new HashMap<String, String>();
78  	}
79  
80  	public String getAccessToken() {
81  		return accessToken;
82  	}
83  
84  	@Override
85  	public long getExpires() {
86  		return expires;
87  	}
88  
89  	@Override
90  	public long getCreateTime() {
91  		return createTime;
92  	}
93  
94  	public Map<String, String> getExtra() {
95  		return extra;
96  	}
97  
98  	public Token pushExtra(String name, String value) {
99  		this.extra.put(name, value);
100 		return this;
101 	}
102 
103 	@Override
104 	public String toString() {
105 		return "Token [accessToken=" + accessToken + ", expires=" + expires
106 				+ ", createTime=" + createTime + ", extra=" + extra + "]";
107 	}
108 }