评论

了解用Bmob云函数获取openid

关于获取openid,开头学习使用了一下Bmob云函数获取openid,如果你也正好需要或者你也想了解可以看看

前言

在开发一些小程序应用的时候为了实现一些特定的业务功能,需要确定是否是同一用户,例如:我们做了一个可以发帖的小程序,A用户发了一篇帖子,B用户也发了一篇帖子,如果没有唯一标识来确认哪个帖子属于谁的话,那么整个就会乱套。而在小程序中openid是用户的唯一标识,也就是说我们可以通过保存openid来知道帖子到底属于谁。但是openid对于用户来说也是很重要的一个信息,所以小程序对于开发者获取openid是比较谨慎的。在了解了openid之后,说说Bmob

Bmob是一个做的非常好的云服务平台,提供很棒的后端服务,而且我觉得它非常的便捷,让我们的开发变的简单起来,特别是对于学生党来说,Bmob的免费版真的是一个福音,当然微信小程序官方的云开发也是非常的不错,(这主要和我当时别人推荐的选择有关)简单解释之后言归正传—如何通过Bmob获取openid

其实获取openid不用这么麻烦的,但是想体验一下云函数就试了一下,可以算是经验分享一下

获取流程

获取流程可以先看看官方的这张图

这张图告诉我们获取openid的流程粗略的概括为四步

  • 调用wx.login()接口获取到code (code每次都会变)
  • 在通过wx.request()接口将code发送给开发者的服务器
  • 开发者服务器再将登陆凭证和code等信息发送给微信服务器
  • 验证后返回openid

获取的接口

临时登录凭证校验接口其实是一个 HTTPS 接口,开发者服务器可以向通过该接口使用 临时登录凭证code 获取 session_key 和 openid 等。在新的文档里面好像没有看到此接口(有可能是我不细心,各位可以仔细看看)

接口地址

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

请求参数

Bmob获取

这里要说的是Bmob的云函数是收费的,所以可以作为学习使用吧,如果有经济实力可以使用

首先通过Bmob的后台创建一个云函数getOpenId,代码示例

function onRequest(request, response, modules) {
    var code = request.body.code;
    var Secret = request.body.secret;
    var Appid = request.body.appid;
    var http = modules.oHttp;
    http(
        'https://api.weixin.qq.com/sns/jscode2session?appid=Appid&secret=Secret&js_code=' +code+ '&grant_type=authorization_code',
        function (error, res, body) {
        response.send(body);
    });
}                                                                                    

其次调用wx.login()获取code,并声明一个对象,用来调用云函数

wx.login({
  success(res) {
    if (res.code) {
          let params = {
            funcName: 'getOpenId',
            data: {
             code : res.code ,
             secret : '**************' ,
             appid : '**************' ,
            }
         }
         Bmob.functions(params.funcName, params.data).then(function (response) {
         	console.log(response);
            openid = response.openid;
         }
     }
  }
})

简单获取方法

直接使用wx.request()向接口发起请求获取openid,此方法需要将https://apiweixin.qq.com配置到安全域名列表里,示例代码

wx.login({
     success: function (res) {
       console.log(res)
       if (res.code) {
         //发起网络请求
         wx.request({
           url: 'https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code',
           data: {
             appid:'****************',
             secret:'****************',
             js_code: res.code,
             grant_type: 'authorization_code'
           },
           success(v){
             console.log(v)
           }
         })
       } else {
         console.log('登录失败!' + res.errMsg)
       }
     }
   });

结语

其实没有必要使用云函数吧!使用简单的方法就好了,了解一下云函数还是很不错的,此文新手看就好,大佬轻喷…喜欢可以点个赞哦嘻嘻

最后一次编辑于  2019-04-13  
点赞 3
收藏
评论

5 个评论

  • 我本善狼
    我本善狼
    2020-09-28

    写的非常好,成功调用,非常感谢!!!!

    2020-09-28
    赞同
    回复
  • 一⃰步⃰一⃰脚⃰印⃰
    一⃰步⃰一⃰脚⃰印⃰
    2019-04-19

    哈哈,还是云函数简单

    2019-04-19
    赞同
    回复
  • Snowman
    Snowman
    2019-04-15

    就目前的情况看自己封装最合适

    云开发还不完善,需要优化的地方很多,如果只是简单的应用应该问题不大

    2019-04-15
    赞同
    回复
  • 袁振诺
    袁振诺
    2019-04-14

    bmob 难用

    2019-04-14
    赞同
    回复 1
    • Qiang
      Qiang
      2019-04-14

      没有广告之意,哈哈😂

      2019-04-14
      回复
  • 唐全 采云小程序
    唐全 采云小程序
    2019-04-13

    exports.main = async (event, context) => {
      const openId = event.userInfo.openId
      return {
        openid: event.userInfo.openId
      }
    }

    微信的云函数,一行代码即可获取openid,而且也是免费。为什么还在用bmob?

    2019-04-13
    赞同
    回复 3
    • Qiang
      Qiang
      2019-04-13

      。。哈哈,可能和入门的时候的选择有关😂,后期肯定是都会有了解的,谢谢哥

      2019-04-13
      回复
    • 袁振诺
      袁振诺
      2019-04-16

      本地端直接name然后console就可以看到吗

      2019-04-16
      回复
    • 我本善狼
      我本善狼
      2020-09-28
      一、微信云函数要自己写的
      二、如果微信云开发的话,则多个前端对应一个微信后台没法关联,但是Bmob的话就可以一对多了
      2020-09-28
      回复
登录 后发表内容