co-wechat-oauth Version: 1.0.1 By @Jackson Tian

Co版微信公共平台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(Generator)

用于获取token的方法

参数 saveToken(Generator)

用于保存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);

Exception:

  • err, 获取access token出现异常时的异常对象

返回值:

{
 data: {
   "access_token": "ACCESS_TOKEN",
   "expires_in": 7200,
   "refresh_token": "REFRESH_TOKEN",
   "openid": "OPENID",
   "scope": "SCOPE"
 }
}

方法签名

方法 OAuth.prototype.getAccessToken()
参数 code(String)

授权获取到的code

refreshAccessToken

根据refresh token,刷新access token,调用getAccessToken后才有效
Examples:

api.refreshAccessToken(refreshToken);

Exception:

  • err, 刷新access token出现异常时的异常对象

Return:

{
 data: {
   "access_token": "ACCESS_TOKEN",
   "expires_in": 7200,
   "refresh_token": "REFRESH_TOKEN",
   "openid": "OPENID",
   "scope": "SCOPE"
 }
}

方法签名

方法 OAuth.prototype.refreshAccessToken()
参数 refreshToken(String)

refreshToken

getUser

根据openid,获取用户信息。
当access token无效时,自动通过refresh token获取新的access token。然后再获取用户信息
Examples:

api.getUser(options);

Options:

openId
// 或
{
 "openId": "the open Id", // 必须
 "lang": "the lang code" // zh_CN 简体,zh_TW 繁体,en 英语
}

Callback:

  • err, 获取用户信息出现异常时的异常对象

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

getUserByCode

根据code,获取用户信息。
Examples:

var user = yield api.getUserByCode(code);

Exception:

  • err, 获取用户信息出现异常时的异常对象

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()
参数 code(String)

授权获取到的code