按照我的理解,一个appid
对应一个access_token
(可以刷新),但是我看的wechat-oauth库的markdown有个例子
自定义saveToken方法
TokenSchema.statics.setToken = function (openid, token, cb) {
// 有则更新,无则添加
var query = {openid: openid};
var options = {upsert: true};
this.update(query, token, options, function (err, result) {
if (err) throw err;
return cb(null);
});
};
mongoose.model('Token', 'TokenSchema');
初始化:
var client = new OAuth(appid, secret, function (openid, callback) {
// 传入一个根据openid获取对应的全局token的方法
// 在getUser时会通过该方法来获取token
Token.getToken(openid, callback);
}, function (openid, token, callback) {
// 持久化时请注意,每个openid都对应一个唯一的token!
Token.setToken(openid, token, callback);
});
为什么每个openid都对应一个唯一的token?求指点
求教
来自酷炫的 CNodeMD
非常有帮助,谢谢!
微信分2个token:access_token
和refresh_token
,前者有效期好像只有2个小时,后者是一个月。用户拉取微信授权的时候微信服务器会返回这2个token,你拿到前一个去微信服务器auth是否有效,有效的话则登录成功,无效则告诉用户登录失败(可以选择让用户再次授权)。
前面拿到refresh_token
的时候你需要存下来(因为它的有效期是一个月,access_token
存不存倒无所谓),当用户下次登录的时候你通过refresh_token
拿到access_token
再走之前的auth流程就行。因为你不可能让用户每次都授权啊
看文档就明白了,此token非彼token。 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 微信网页开发->微信网页授权->关于网页授权access_token和普通access_token的区别
1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息; 2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。
所以这里的token和openid是一对一的。
Nihao
多谢,是我自己把这两个token当成同一个了
来自酷炫的 CNodeMD