OpenId是什么?
openid 是示意用户在你的当前运用中的
唯一标识,比方小顺序,微信民众号等,这些都算是一个运用,假如你有多个运用,同一个用户的openId能够并不相同
**下图是猎取OpenId的历程微信的官方文档和时序图**
**小顺序登录的时序图**
思绪:
- 起首挪用wx.login({})猎取登录凭据(code)
- 挪用接口前,需要把微信小顺序的appid 和 secret 示知后端
- 用拿到的code 调换 openid
实例:
App({
onLaunch: function() {
var self = this;
// 展现当地存储才能
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
/** 重点来了****************
|
|
|
|
*********/
// 登录
wx.login({
success: res => {
// 发送 res.code 到背景调换 openId, sessionKey, unionId
var Params = {
code: res.code, //暂时登录凭据
key: self.globalData.MD5Key
};
//天生加密key
Params.key = self.MD5(Params.code + "&" + self.getNowTime() + "&" + Params.key);
wx.request({
url: 'https://testurl/api/test/GetOpenId', //此处填写第三方的接口地点
data: '=' + JSON.stringify(Params),
header: {
'content-type': 'application/json'
},
method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
success: function(res) {
var openid = res.data.RntData.openid //返回openid
self.globalData.openid = openid;
console.log(openid);
}
})
}
})
/** 重点完毕
|
|
|
|
********************************/
// 猎取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已受权,能够直接挪用 getUserInfo 猎取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 能够将 res 发送给背景解码出 unionId
this.globalData.userInfo = res.userInfo
// 因为 getUserInfo 是收集要求,能够会在 Page.onLoad 以后才返回
// 所以此处到场 callback 以防备这类状况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
}
})
是否是很猎奇,为何会多了一步,用第三方服务器去接见微信接口的历程呢?
假如appid和secret存在当地或许前端直接去猎取,很轻易被抓包从而致使用户信息泄漏,因而,用第三方服务器去要求微信接口,能确保openID的安全性