专栏首页疯狂的小程序基于bmob快速搭建小程序用户模块
原创

基于bmob快速搭建小程序用户模块

一键登录

开发小程序登录后端工作:

客户端调用wx.login()后获取的code,后端人员拿到code和微信换取openid和session_key;

除此之外后端人员还需要根据openid生成sessiontoken作为服务器和小程序之间做登录态校验保证安全性,客户端每次请求需要带上sessiontoken,后端需要作校验;

还需要提供接口给客户端保存用户信息(头像、名称等),或者根据openid去和微信换取用户信息;

中间的过程的调试还需要花费大量的时间

利用bmob的小程序sdk的实现一键登录:

以上后端开发工作全省了!!

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 会创建一个新的用户,你可以在 控制台 >应用> 数据 中的 _User表中看到该用户的信息,如果该用户曾经使用该方式登录过此应用,再次调用登录 API 会返回同一个用户。

登录后获取到一个用户数据对象,包括用户唯一标识objectId、openid、nickName、avatarUrl、authData,authData包括sessiontoken登录校验,小程序sdk封装了请求带上了缓存authData的sessiontoken,所以session_token这部分 不需要bmob的开发者考虑;

当前用户

如果用户每次打开App的时候都要求登录无疑是令人感到厌烦的,你可以通过缓存当前的Bmob.User对象来避免这个问题。

无论你使用任何注册或者登录方法,用户都会在localStorage中储存,你可以把缓存作为一个session对待,并且自动假设用户已经登录了。

你可以操作Bmob.User.current()来获取当前用户的信息

var currentUser = Bmob.User.current();

用户安全

Bmob.User类默认就是受保护的,在Bmob.User中保存的数据只能被那个用户所修改。默认地,数据仍然可以被任意客户端所读取。这样就是说,有些Bmob.User对象被认证后是可以修改的,其他的仍然是只读的。

特别的,你不能调用save或者delete方法除非Bmob.User经过了认证,就比如调用过了logIn或者signUp方法,这样保证只有用户能改动他们自身的数据。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 电商小程序的场景使用和营销手段

    当所有人都期待在16年能借用小程序去收割一波新红利的时候,张小龙却与常人期盼不同,让小程序走低调路线,没有大步的向前进;在17年内小程序不断更新自己的能力,在年...

    疯狂的小程序
  • 微信小程序HCE能力全面开放,手机秒变公交卡

    应该很多上班族有同感,没带零钱,忘带交通卡,赶时间上班,这种情况偶有出现,肿么破?

    疯狂的小程序
  • 重点解读:用小程序给公众号涨粉10w的7大行业案例

    2017年1月9日,张小龙宣布小程序上线,到今天、刚好一周年; 期间陆陆续续出现了拼多多、摩拜单车、语音红包、头脑王者、心理测试等爆款小程序。今天来和大家聊聊如...

    疯狂的小程序
  • 如何避免设计出“烦人”的登录和注册页面

    往往当用户想要在某一个网站或APP上登录或注册一个账号时,登录和注册页面就显得尤为重要。登录或者注册表单是网页和APP设计中最重要的元素之一,所以在设计网站和...

    奔跑的小鹿
  • 基于图卷积的价格感知推荐

    Paper:Price-aware Recommendation with Graph Convolutional Networks

    张小磊
  • 协同过滤推荐算法

    相信大家对推荐系统已经很熟悉了,它通过分析用户的历史行为,挖掘用户的兴趣爱好,预测并推荐给用户其接下来有可能感兴趣的事物,例如商品推荐、音乐推荐、新闻以及最近很...

    小萌哥
  • 深度解析某头条的一道面试题

    请问,如果实时展现热门文章,比如近8小时点击量最大的文章前100名。 如果是你来开发这个功能,你怎么做?

    老钱
  • 大家最讨厌APP的什么功能?为什么?

    从电脑时代的过度到移动互联网时代,但是应用程序的扰民行为并没有因此而减少,在PC时代用户最讨厌的软件全家桶的套件,只要安装其中一个软件很多软件集合就会被悄悄安装...

    程序员互动联盟
  • ILive独立模式登录报错fail IMSDK,6013,SDK not init

    用户3818029
  • 典藏版Web功能测试用例库

    ​ 初始界面元素:title、内容,默认值、必填项(红*) ​ 样式美观 ​ 排版规范 ​ 字体统一 ​ 编辑页面有光标,定位在第一个可编辑文本框 ​...

    dongfanger

扫码关注云+社区

领取腾讯云代金券