php企业获取userid,企业端项⽬登陆、获取⽤户信息
流程等
在开发之前,最好先过⼀遍官⽅的API,不然很难往下进⾏。企业API
先介绍⼏个基本的概念:
cropid
每个企业都拥有⼀个唯⼀的cropid,要获取次信息可在管理后台“我的企业”-“企业信息”下查看“企业ID”(这个需要管理员权限的)
userid
每个成员都有⼀个唯⼀的userid,其实就是账号,在管理后台-“通讯录”-点某个成员的详情页就可以看到了
部门id
每个部门的唯⼀id,在管理后台-“通讯录”-“组织结构”-点击某个部门右边的⼩圆点可以看到
tagid
聚美优品韩庚每个标签都有⼀个唯⼀的id,在管理后台-“通讯录”-“标签”,选中某个标签,在右上⾓有个“标签详情”按钮,就可以看到了。
agentid
每个应⽤都有⼀个唯⼀的id,在管理后台-“应⽤与⼩程序”-“应⽤”,点击某个应⽤,就可以看到了。
appid
appid就是开发者id,是开发的识别码,配合开发者密码,可调⽤的接⼝能⼒。
secret
secret是企业应⽤⾥⾯⽤于保障数据安全的“钥匙”,每⼀个应⽤都有⼀个独⽴的访问秘钥,为了保证数据的安全,secret务必不能泄露。
access_token
access_token是企业后台去企业的后台获取信息时的重要票据,由cropid和secret产⽣,所有的
接⼝在通信时候都需携带此信息⽤于验证接⼝的访问权限。(access_token
返回结果前端会拿到access_token ,结果如下:
{
"errcode": 0,
"errmsg": "ok",
"access_token": "accesstoken000001",
"expires_in": 7200
}
⾸先,获取access_token是调⽤企业API接⼝的第⼀步,相当于创建⼀个登陆凭证,其他业务API接⼝,多需要依赖access_token来鉴权调⽤者⾝份。因此,开发者在使⽤业务接⼝前,要明确access_token的颁发来源,使⽤正确的access_token。
步⼊正题吧
⾝份认证
⽹页授权登陆:企业提供了OAuth的授权登陆⽅式,可以让从企业终端打开⽹页获取成员的⾝份信息,从⽽避免登陆环节。企业应⽤中的URL链接(包括⾃定义菜单或者消息中⼼中的链接),均可通过OAuth2.0验证接⼝来获取成员的UserId⾝份信息。
在进⼊我们开发的项⽬之前, 我们需要先访问第三⽅服务构造的OAuth2链接(参数包括当前第三⽅服务的⾝份ID,以及重定向URL),将⽤户引导到认证服务器的授权页⾯。这⾥建议企业应⽤中的URL链接直接填写⾃⼰企业的页⾯地址。成员操作跳转到企业页⾯时,企业后台校验是否有标识识别成员⾝份的信息,根据获取的信息在进⼊相应的页⾯。
下⾯贴⼀下获取⽤户信息的⽅法:
第⼀步需要构造如下链接来获取code参数,我这边贴⼀下我实际开发中构造的url:
function getToken(str) {
const appId = Env.appId
const redirectUrl = encodeURIComponent(`${Env.url}?str=${str||0}`)
const agentId = Env.agentId
}
说明⼀下各个参数代表什么意思。
appid:企业的cropid
redirect_uri:授权后重定向的回调链接地址,要使⽤urlencode对连接进⾏处理
response_type:返回类型,此时固定为:code
scope:应⽤授权作⽤域,企业⾃建应⽤固定填写:snsapi_base
state:重定向后会带上state参数,企业可填写a-zA-Z0-9的参数值,长度不可超过128个字节
wechat_redirect:终端使⽤此参数判断是否需要带上⾝份信息
当员⼯点击后,页⾯将跳转⾄redirect_uri?code=CODE&state=STATE,这时候企业可根据拿到的code获得员⼯的userid。
下⾯是进⼊之前的登陆判断:
enterWxAuthor () {
//获取⽤户token
同桌100学习网怎么样>三八妇女节节日祝福var _this = this;
var wxUserInfo = Item("userToken");
var code = GetQueryString("code");
sjm韩庚if (!wxUserInfo) {
if (code) {
名字游戏_TokenKey();
} else {
//没有⽤户信息,没有授权-->> 需要授权,跳转授权页⾯
getToken()
}
} else {
//初始化页⾯
_this.init();
}
},
getTokenKey⽅法:
getTokenKey: function () {
//获取⽤户信息,token 权限
var _this = this;
//通过code获得⽤户token
var url = 'api/....';
//这⾥的code就是我们上⾯构造的OAuth链接的code参数
var code = GetQueryString("code");
ajax(url, {
WXTicket: code
}, '').then(function (res) {
// 去除url中code,⽬的是为了避免重复code
if (placeState) {
placeState('', '', window.place(
/&code=.*?(?=[\/])|code=.*?(?=[\/])&?/, ''));
} else {
if (/code=/.test(window.location.href)) {
window.location.href = window.place(/&code=.*?(?=[\/])|code=.*?(?=[\/])&?/, '');
}
}
_Set('tokenStr', res.data)
if (res.data.Data) {
sessionStorage.setItem('userToken', res.data.Data.Token)
}
_this.init()
})
},
GetQueryString⽅法:
function GetQueryString(name) {
let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
let r = window.location.search.substr(1).match(reg)
if (r !== null) return unescape(r[2])
return null;
}
这⾥要注意⼀下处理端的⼀些问题。有的⽤户喜欢把的默认字体设置的很⼤,这就会引起页⾯布局错乱,下⾯是把重写设置⽹页字体⼤⼩的⽅法:
// 禁⽌浏览器缩放
(function () {
if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
handleFontSize();
} else {
if (document.addEventListener) {
document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);
} else if (document.attachEvent) {
document.attachEvent("WeixinJSBridgeReady", handleFontSize);
出广东省要做核酸检测吗document.attachEvent("onWeixinJSBridgeReady", handleFontSize);
}
}
function handleFontSize() {
// 设置⽹页字体为默认⼤⼩
WeixinJSBridge.invoke('setFontSizeCallback', {'fontSize': 0});
// 重写设置⽹页字体⼤⼩的事件
<('menu:setfont', function () {
WeixinJSBridge.invoke('setFontSizeCallback', {'fontSize': 0});
});
}
})();
⼤致的流程就是这样。总结⼀下就是:进⼊系统之前要先⾛⼀下的OAuth链接,拿到code,再凭借code获取⽤户的token。
后⾯就随便玩了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论