一鍵登錄
傳統(tǒng)開發(fā)小程序登錄后端工作:
- 客戶端調(diào)用wx.login()后獲取的code翁潘,后端人員拿到code和微信換取openid和session_key;
- 除此之外后端人員還需要根據(jù)openid生成session_token作為服務(wù)器和小程序之間做登錄態(tài)校驗保證安全性歼争,客戶端每次請求需要帶上session_token拜马,后端需要作校驗渗勘;
- 還需要提供接口給客戶端保存用戶信息(頭像、名稱等)俩莽,或者根據(jù)openid去和微信換取用戶信息旺坠;
- 中間的過程的調(diào)試還需要花費大量的時間
利用bmob的小程序sdk的實現(xiàn)一鍵登錄:
以上后端開發(fā)工作全省了!0绯取刃!
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 會在設(shè)備上持久化保存崩侠,之后可以使用 Bmob.User.current() 獲取當前登錄用戶
如果該用戶是第一次使用此應(yīng)用,調(diào)用登錄 API 會創(chuàng)建一個新的用戶坷檩,你可以在 控制臺 >應(yīng)用> 數(shù)據(jù) 中的 _User表中看到該用戶的信息啦膜,如果該用戶曾經(jīng)使用該方式登錄過此應(yīng)用,再次調(diào)用登錄 API 會返回同一個用戶淌喻。
登錄后獲取到一個用戶數(shù)據(jù)對象僧家,包括用戶唯一標識objectId、openid裸删、nickName八拱、avatarUrl、authData涯塔,authData包括session_token登錄校驗肌稻,小程序sdk封裝了請求帶上了緩存authData的session_token,所以session_token這部分 不需要bmob的開發(fā)者考慮匕荸;
當前用戶
如果用戶每次打開App的時候都要求登錄無疑是令人感到厭煩的爹谭,你可以通過緩存當前的Bmob.User對象來避免這個問題。
無論你使用任何注冊或者登錄方法榛搔,用戶都會在localStorage中儲存诺凡,你可以把緩存作為一個session對待,并且自動假設(shè)用戶已經(jīng)登錄了践惑。
你可以操作Bmob.User.current()來獲取當前用戶的信息
var currentUser = Bmob.User.current();
用戶安全
Bmob.User類默認就是受保護的腹泌,在Bmob.User中保存的數(shù)據(jù)只能被那個用戶所修改。默認地尔觉,數(shù)據(jù)仍然可以被任意客戶端所讀取凉袱。這樣就是說,有些Bmob.User對象被認證后是可以修改的,其他的仍然是只讀的专甩。
特別的钟鸵,你不能調(diào)用save或者delete方法除非Bmob.User經(jīng)過了認證,就比如調(diào)用過了logIn或者signUp方法涤躲,這樣保證只有用戶能改動他們自身的數(shù)據(jù)棺耍。
怎么樣,都很簡單吧篓叶!
Bmob地址:www.bmob.cn