前言
在开发一些小程序应用的时候为了实现一些特定的业务功能,需要确定是否是同一用户,例如:我们做了一个可以发帖的小程序,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)
}
}
});
结语
其实没有必要使用云函数吧!使用简单的方法就好了,了解一下云函数还是很不错的,此文新手看就好,大佬轻喷…喜欢可以点个赞哦嘻嘻
写的非常好,成功调用,非常感谢!!!!
哈哈,还是云函数简单
就目前的情况看自己封装最合适
云开发还不完善,需要优化的地方很多,如果只是简单的应用应该问题不大
bmob 难用
没有广告之意,哈哈😂
exports.main = async (event, context) => {
const
openId = event.userInfo.openId
return
{
openid: event.userInfo.openId
}
}
微信的云函数,一行代码即可获取openid,而且也是免费。为什么还在用bmob?
。。哈哈,可能和入门的时候的选择有关😂,后期肯定是都会有了解的,谢谢哥
本地端直接name然后console就可以看到吗
二、如果微信云开发的话,则多个前端对应一个微信后台没法关联,但是Bmob的话就可以一对多了