微信公共平台OAuth
根据appid和appsecret创建OAuth接口的构造函数
如需跨进程跨机器进行操作,access token需要进行全局维护
使用使用token的优先级是:
Examples:
var OAuth = require('wechat-oauth');
var api = new OAuth('appid', 'secret');
方法签名
| 函数 | OAuth() | ||
| 参数 | appid(String) | 在公众平台上申请得到的appid | |
| 参数 | appsecret(String) | 在公众平台上申请得到的app secret | |
| 参数 | getToken(Function) | 用于获取token的方法 | |
| 参数 | saveToken(Function) | 用于保存token的方法 | |
用于设置urllib的默认options
Examples:
oauth.setOpts({timeout: 15000});
方法签名
| 方法 | OAuth.prototype.setOpts() | ||
| 参数 | opts(Object) | 默认选项 | |
获取授权页面的URL地址
方法签名
| 方法 | OAuth.prototype.getAuthorizeURL() | ||
| 参数 | redirect(String) | 授权后要跳转的地址 | |
| 参数 | state(String) | 开发者可提供的数据 | |
| 参数 | scope(String) | 作用范围,值为snsapi_userinfo和snsapi_base,前者用于弹出,后者用于跳转 | |
获取授权页面的URL地址
方法签名
| 方法 | OAuth.prototype.getAuthorizeURLForWebsite() | ||
| 参数 | redirect(String) | 授权后要跳转的地址 | |
| 参数 | state(String) | 开发者可提供的数据 | |
| 参数 | scope(String) | 作用范围,值为snsapi_login,前者用于弹出,后者用于跳转 | |
根据授权获取到的code,换取access token和openid
获取openid之后,可以调用wechat.API来获取更多信息
Examples:
api.getAccessToken(code, callback);
Callback:
err, 获取access token出现异常时的异常对象result, 成功时得到的响应结果Result:
{
 data: {
   "access_token": "ACCESS_TOKEN",
   "expires_in": 7200,
   "refresh_token": "REFRESH_TOKEN",
   "openid": "OPENID",
   "scope": "SCOPE"
 }
}
方法签名
| 方法 | OAuth.prototype.getAccessToken() | ||
| 参数 | code(String) | 授权获取到的code | |
| 参数 | callback(Function) | 回调函数 | |
根据refresh token,刷新access token,调用getAccessToken后才有效
Examples:
api.refreshAccessToken(refreshToken, callback);
Callback:
err, 刷新access token出现异常时的异常对象result, 成功时得到的响应结果Result:
{
 data: {
   "access_token": "ACCESS_TOKEN",
   "expires_in": 7200,
   "refresh_token": "REFRESH_TOKEN",
   "openid": "OPENID",
   "scope": "SCOPE"
 }
}
方法签名
| 方法 | OAuth.prototype.refreshAccessToken() | ||
| 参数 | refreshToken(String) | refreshToken | |
| 参数 | callback(Function) | 回调函数 | |
根据openid,获取用户信息。
当access token无效时,自动通过refresh token获取新的access token。然后再获取用户信息
Examples:
api.getUser(openid, callback);
api.getUser(options, callback);
Options:
// 或
{
 "openid": "the open Id", // 必须
 "lang": "the lang code" // zh_CN 简体,zh_TW 繁体,en 英语
}
Callback:
err, 获取用户信息出现异常时的异常对象result, 成功时得到的响应结果Result:
{
 "openid": "OPENID",
 "nickname": "NICKNAME",
 "sex": "1",
 "province": "PROVINCE"
 "city": "CITY",
 "country": "COUNTRY",
 "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
 "privilege": [
   "PRIVILEGE1"
   "PRIVILEGE2"
 ]
}
方法签名
| 方法 | OAuth.prototype.getUser() | ||
| 参数 | options(Object,String) | 传入openid或者参见Options | |
| 参数 | callback(Function) | 回调函数 | |
检验授权凭证(access_token)是否有效。
Examples:
api.verifyToken(openid, accessToken, callback);
方法签名
| 方法 | OAuth.prototype.verifyToken() | ||
| 参数 | openid(String) | 传入openid | |
| 参数 | accessToken(String) | 待校验的access token | |
| 参数 | callback(Function) | 回调函数 | |
根据code,获取用户信息。
Examples:
api.getUserByCode(code, callback);
Callback:
err, 获取用户信息出现异常时的异常对象result, 成功时得到的响应结果Result:
{
 "openid": "OPENID",
 "nickname": "NICKNAME",
 "sex": "1",
 "province": "PROVINCE"
 "city": "CITY",
 "country": "COUNTRY",
 "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
 "privilege": [
   "PRIVILEGE1"
   "PRIVILEGE2"
 ]
}
方法签名
| 方法 | OAuth.prototype.getUserByCode() | ||
| 参数 | options(Object,String) | 授权获取到的code | |
| 参数 | callback(Function) | 回调函数 | |
对返回结果的一层封装,如果遇见微信返回的错误,将返回一个错误
参见:http://mp.weixin.qq.com/wiki/index.php?title=返回码说明
方法签名
| 方法 | exports.wrapper() | ||