wechat-oauth Version: 1.2.1 By @Jackson Tian

微信公共平台OAuth

oauth: API索引


OAuth

根据appid和appsecret创建OAuth接口的构造函数
如需跨进程跨机器进行操作,access token需要进行全局维护
使用使用token的优先级是:

  1. 使用当前缓存的token对象
  2. 调用开发传入的获取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的方法

setOpts

用于设置urllib的默认options

Examples:

oauth.setOpts({timeout: 15000});

方法签名

方法 OAuth.prototype.setOpts()
参数 opts(Object)

默认选项

getAuthorizeURL

获取授权页面的URL地址

方法签名

方法 OAuth.prototype.getAuthorizeURL()
参数 redirect(String)

授权后要跳转的地址

参数 state(String)

开发者可提供的数据

参数 scope(String)

作用范围,值为snsapi_userinfo和snsapi_base,前者用于弹出,后者用于跳转

getAuthorizeURLForWebsite

获取授权页面的URL地址

方法签名

方法 OAuth.prototype.getAuthorizeURLForWebsite()
参数 redirect(String)

授权后要跳转的地址

参数 state(String)

开发者可提供的数据

参数 scope(String)

作用范围,值为snsapi_login,前者用于弹出,后者用于跳转

getAccessToken

根据授权获取到的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)

回调函数

refreshAccessToken

根据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)

回调函数

getUser

根据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)

回调函数

verifyToken

检验授权凭证(access_token)是否有效。
Examples:

api.verifyToken(openid, accessToken, callback);

方法签名

方法 OAuth.prototype.verifyToken()
参数 openid(String)

传入openid

参数 accessToken(String)

待校验的access token

参数 callback(Function)

回调函数

getUserByCode

根据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)

回调函数

util: API索引


wrapper

对返回结果的一层封装,如果遇见微信返回的错误,将返回一个错误
参见:http://mp.weixin.qq.com/wiki/index.php?title=返回码说明

方法签名

方法 exports.wrapper()