基于bmob后端云实现的微信小程序自动登录

一、什么是bmob后端云?这个能用来干什么?

我们在开发项目的时候肯定需要开发服务器的,但在个人开发时除了写客户端之外还要再写服务器端就很麻烦

这时候使用bmob后端云就能完美解决我们这个问题(重点是免费的!!!)

我们只需进行服务器开发即可

bomb后端云官网:Bmob后端云

二、如何使用后端云

登陆注册一个账号和看开发文档;

因为是简单的东西我就此跳过,涉及相关的操作下面我会详细提出的

三、使用bmob后端云实现的微信小程序自动登录

1.网站后台创建应用

登陆进去用户中心后点击左上方的创建应用

填好你要创建的应用相关信息

进行扫码绑定后创建成功

2.配置小程序密钥和获取应用密钥

登录微信公众平台,进入设置->开发设置来获取AppID和AppSecret

然后回到bmob,进入设置->应用配置,将AppID和AppSecret填进去即可

3.配置安全域名

进入微信小程序后台配置里

在设置->开发设置->服务器域名

如图所示进行配置

4.下载和安装BmobSDK

点击下载小程序bmobSDK

使用方法:

①下载将utils目录复制至项目目录下

②在App.js初始化SDK

var Bmob = require('utils/bmob.js');
Bmob.initialize("你的Application ID", "你的REST API Key");

Application ID和 REST API Key在后端云的设置->应用秘钥里获得


5.小程序相关开发

使用后端云实现一键登录很简单
固定写法
只需在APP.js这样子写就行了

App({
  onLaunch: function () {
    var user = new Bmob.User() //开始注册用户
    user.auth().then(function (obj) {
      console.log('登陆成功')
    },
      function (err) {
        console.log('失败了', err)
      });
  },
  getUserInfo: function (cb) {
    var that = this
    if (this.globalData.userInfo) {
      typeof cb == 'function' && cb(this.globalData.userInfo)
    } else {
      //调用登录接口 
      wx.login({
        success: function () {
          wx.getUserInfo({
            success: function (res) {
              that.globalData.userInfo = res.userInfo
              typeof cb == 'function' && cb(that.globalData.userInfo)
            }
          })
        }
      })
    }
  },

  globalData: {
    userInfo: null
  }
})

user用户对象中的loginWithWeapp方法使用当前使用小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 Bmob.User.current() 获取当前登录用户

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

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

当前用户

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

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

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

用户安全

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

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

怎么样,都很简单吧!

推荐阅读更多精彩内容