Skip to content

Commit cd1410f

Browse files
authored
feat(User): add .loginWithWeapp() and #linkWithWeapp() (#391)
1 parent 88c29a4 commit cd1410f

File tree

1 file changed

+46
-7
lines changed

1 file changed

+46
-7
lines changed

src/user.js

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
const _ = require('underscore');
22
const AVError = require('./error');
33
const AVRequest = require('./request').request;
4+
const Promise = require('./promise');
5+
6+
const getWeappLoginCode = () => {
7+
if (typeof wx === 'undefined' || typeof wx.login !== 'function') {
8+
throw new Error('Weapp Login is only available in Weapp');
9+
}
10+
return new Promise((resolve, reject) => {
11+
wx.login({
12+
success: ({ code, errMsg }) => {
13+
if (code) {
14+
resolve(code);
15+
} else {
16+
reject(new Error(errMsg));
17+
}
18+
},
19+
});
20+
});
21+
};
422

523
module.exports = function(AV) {
624
/**
@@ -108,9 +126,9 @@ module.exports = function(AV) {
108126
// Some old version of leanengine-node-sdk will overwrite
109127
// AV.User._saveCurrentUser which returns no Promise.
110128
// So we need a Promise wrapper.
111-
return AV.Promise.resolve(AV.User._saveCurrentUser(this));
129+
return Promise.resolve(AV.User._saveCurrentUser(this));
112130
} else {
113-
return AV.Promise.resolve();
131+
return Promise.resolve();
114132
}
115133
},
116134

@@ -141,6 +159,16 @@ module.exports = function(AV) {
141159
}
142160
},
143161

162+
/**
163+
* 将用户与小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用小程序的微信帐号。
164+
* 仅在小程序中可用。
165+
*
166+
* @return {AV.User}
167+
*/
168+
linkWithWeapp() {
169+
return getWeappLoginCode().then(code => this._linkWith('lc_weapp', { code }));
170+
},
171+
144172
/**
145173
* Unlinks a user from a service.
146174
* @private
@@ -735,6 +763,17 @@ module.exports = function(AV) {
735763
return AV.User._logInWith(platform, authData);
736764
},
737765

766+
/**
767+
* 使用当前使用小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。
768+
* 仅在小程序中可用。
769+
*
770+
* @since 2.0.0
771+
* @return {AV.User}
772+
*/
773+
loginWithWeapp() {
774+
return getWeappLoginCode().then(code => this.signUpOrlogInWithAuthData({ code }, 'lc_weapp'));
775+
},
776+
738777
/**
739778
* Associate a user with a third party auth data(AccessToken).
740779
*
@@ -764,7 +803,7 @@ module.exports = function(AV) {
764803
logOut: function() {
765804
if (AV._config.disableCurrentUser) {
766805
console.warn('AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');
767-
return AV.Promise.resolve(null);
806+
return Promise.resolve(null);
768807
}
769808

770809
if (AV.User._currentUser !== null) {
@@ -926,16 +965,16 @@ module.exports = function(AV) {
926965
currentAsync: function() {
927966
if (AV._config.disableCurrentUser) {
928967
console.warn('AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');
929-
return AV.Promise.resolve(null);
968+
return Promise.resolve(null);
930969
}
931970

932971
if (AV.User._currentUser) {
933-
return AV.Promise.resolve(AV.User._currentUser);
972+
return Promise.resolve(AV.User._currentUser);
934973
}
935974

936975
if (AV.User._currentUserMatchesDisk) {
937976

938-
return AV.Promise.resolve(AV.User._currentUser);
977+
return Promise.resolve(AV.User._currentUser);
939978
}
940979

941980

@@ -1023,7 +1062,7 @@ module.exports = function(AV) {
10231062
promise = AV.User.logOut();
10241063
}
10251064
else {
1026-
promise = AV.Promise.resolve();
1065+
promise = Promise.resolve();
10271066
}
10281067
return promise.then(function() {
10291068
user._isCurrentUser = true;

0 commit comments

Comments
 (0)