统一 Web 端(含 Windows 客户端和各种 Webview 中需要调用账号信息的场景)调用豌豆荚账号系统 API 的方式,封装内部细节。保证 SDK API 稳定、优雅、安全并且文件体积小巧。
目前提供两种方案使用:
- 通过 Hook 在页面中嵌入豌豆荚账号页面,用户登录(或其它操作)成功后将返回用户信息。适合需要豌豆荚账号进行认证的产品;
- 通过 SDK 直接访问账号系统 API。适合针对豌豆荚账号系统进行深度定制的产品。
Hook 和 SDK 都依赖 jQuery(或 Zepto)。
其中,Zepto 需要通过定制额外支持 data / deferred / callbacks 模块。定制方法请参考官方说明,或者直接使用我们编译好的定制版 app/javascripts/zepto.min.js
。
- 通过 git 或 bower 安装
git clone git@github.com:wandoulabs/Account-JavaScriptSDK.git
bower install wandoulabs/Account-JavaScriptSDK
- 在页面中引入
dist/snappea-account-hook.js
或dist/snappea-account-sdk.js
如果需要手动编译最新代码,请依次执行:
npm install
bower install
grunt build
所有异步函数(函数名以 Async
结尾)将返回 $.Deferred
对象。
SnapPea.AccountHook.checkAsync(options).then(function (resp) {
console.log('Hello, %s!', resp.data.nick); // 已登录
}).fail(function () {
console.log('Who are you?'); // 未登录
});
传入的参数 options
是选填的,类型为 Object
,用于附加额外字段到检查用户登录状态的请求中。
SnapPea.AccountHook.openAsync(name, options).then(function (resp) {
if (resp.isLoggedIn) {
console.log('Welcome back, %s.', resp.data.nick); // 操作成功后处于登录状态
} else {
console.log('Bye.'); // 操作成功后处于未登录状态
}
});
传入的参数 name
是必填的,可为:
login
登录register
注册find
找回密码password
修改密码logout
退出
传入的参数 options
是选填的,类型为 Object
,用于定制豌豆荚账号页面。
SnapPea.AccountHook.redirect(name);
SnapPea.Account.loginAsync({
username : 'username',
password : 'psw'
});
SnapPea.Account.regAsync({
username : 'username',
password : 'psw'
});
SnapPea.Account.isEmail(email);
SnapPea.Account.isPhoneNumber(email);
SnapPea.Account.checkUsernameAsync(username);
SnapPea.Account.loginWithThirdParty({
platform : 'sina',
callback : 'http://www.wandoujia.com/'
});
SnapPea.Account.isLogined();
SnapPea.Account.getUserInfo();
SnapPea.Account.checkUserLoginAsync();
SnapPea.Account.findPwdAsync(username);
SnapPea.Account.checkCodeAsync({
username : 'username',
passcode : 'passcode'
});
SnapPea.Account.resetPwdAsync({
username : 'username',
passcode : 'passcode',
password : 'password'
});
SnapPea.Account.modifyPwdAsync({
password : 'password',
newpassword : 'newpassword'
});
SnapPea.Account.updateProfileAsync({
nickname : 'nickname'
});
SnapPea.Account.uploadAvatarAsync({
file : e.currentTarget.files[0]
});
SnapPea.Account.checkPasscodeAsync({
passcode : 'passcode'
});
SnapPea.Account.modifyPwdByCodeAsync({
passcode : 'passcode',
password : 'password'
});
SnapPea.Account.activateAsync({
type : 'sms' // or email
});
SnapPea.Account.activateValidAsync({
passcode : 'passcode',
password : 'password'
});
SnapPea.Account. unbindThirdPartyAsync({
platform : '1' // 1=sina / 2=qq / 3=renren
});
SnapPea.Account.logoutAsync();