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