開發(fā)小程序登錄后端工作:
利用bmob的小程序sdk的實現(xiàn)一鍵登錄:
以上后端開發(fā)工作全省了!!
wx.login({
success: function (res) {
var user = new Bmob.User();//實例化
user.loginWithWeapp(res.code).then(function (user) {
if (user.get("nickName")) {
//更新緩存中的openid
wx.setStorageSync('openid', user.get("openid"))
} else {
//*************保存用戶其他信息,比如昵稱頭像之類的*****************
wx.getUserInfo({
success: function (result) {
var nickName = result.userInfo.nickName;
var avatarUrl = result.userInfo.avatarUrl;
var u = Bmob.Object.extend("_User");
var query = new Bmob.Query(u);
// 這個 id 是要修改條目的 id,你在生成這個存儲并成功時可以獲取到,請看前面的文檔
query.get(user.id, {
success: function (result) {
// 自動綁定之前的賬號
result.set('nickName', nickName);
result.set("userPic", avatarUrl);
result.set("openid", openid);
result.save();
}
});
}
});
//*************保存用戶其他信息,比如昵稱頭像之類的end*****************
}
}, function (err) {
console.log(err, 'errr');
});
}
});
}
|
user用戶對象中的loginWithWeapp方法使用當前使用小程序的微信用戶身份注冊或登錄,成功后用戶的 session 會在設備上持久化保存,之后可以使用 Bmob.User.current() 獲取當前登錄用戶
如果該用戶是第一次使用此應用,調用登錄 API 會創(chuàng)建一個新的用戶,你可以在 控制臺 >應用> 數(shù)據(jù) 中的 _User表中看到該用戶的信息,如果該用戶曾經(jīng)使用該方式登錄過此應用,再次調用登錄 API 會返回同一個用戶。
登錄后獲取到一個用戶數(shù)據(jù)對象,包括用戶唯一標識objectId、openid、nickName、avatarUrl、authData,authData包括sessiontoken登錄校驗,小程序sdk封裝了請求帶上了緩存authData的sessiontoken,所以session_token這部分 不需要bmob的開發(fā)者考慮;
如果用戶每次打開App的時候都要求登錄無疑是令人感到厭煩的,你可以通過緩存當前的Bmob.User對象來避免這個問題。
無論你使用任何注冊或者登錄方法,用戶都會在localStorage中儲存,你可以把緩存作為一個session對待,并且自動假設用戶已經(jīng)登錄了。
你可以操作Bmob.User.current()來獲取當前用戶的信息
var currentUser = Bmob.User.current();
Bmob.User類默認就是受保護的,在Bmob.User中保存的數(shù)據(jù)只能被那個用戶所修改。默認地,數(shù)據(jù)仍然可以被任意客戶端所讀取。這樣就是說,有些Bmob.User對象被認證后是可以修改的,其他的仍然是只讀的。
特別的,你不能調用save或者delete方法除非Bmob.User經(jīng)過了認證,就比如調用過了logIn或者signUp方法,這樣保證只有用戶能改動他們自身的數(shù)據(jù)。