php企业微信授权,企业微信网页授权

1.判断是否登录,如果登录了,就让其直接访问.没有登录跳转到登录授权的方法

在laravel中代码实现

a.让需要登录的所有路由使用中间件包裹

//授权登陆

Route::get('auth/login', 'Front\AuthController@getLogin')->name('login');

//需要登录才可以访问的网页

Route::group([ 'middleware' => 'auth', 'namespace' => 'Front'], function(){

.......

});

//其他不需要登录可以访问的网页

......

b.中间件判断登录代码

public function handle($request, Closure $next)

{

if (!\Auth::check()){//判断登录

//没有登录

if ($request->ajax()) {//如果是异步

return response('Unauthorized.', 401);

} else {

return redirect('auth/login');//跳转到授权登录的方法

}

}

//登录继续执行

return $next($request);

}

}

2.授权登录的逻辑

a.判断网页来源,是自己跳转还是微信返回的,发送请求 构造链接 目的是为了获取code

$state=$request->state;//初始的时候没有值,点确定按钮后是,submit,获取到code后,get_code

//只有从微信端跳转过来的链接 才可以进入if

if($state!='get_code'){

//发送获取code请求

$config = Config::find(1);//从数据库取出来corpid 和 agent_id

//判断网站是http 还是https

if(isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on')

{

$redirect_uri = urlencode('https://'.$_SERVER['HTTP_HOST'].'/auth/login');

//echo "HTTPS";

}else{

//echo "HTTP";

$redirect_uri = urlencode('http://'.$_SERVER['HTTP_HOST'].'/auth/login');

}

//snsapi_userinfo 此处使用静默授权

$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$config->corpid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&agentid=$config->agent_id&state=get_code#wechat_redirect";//构造链接

return redirect($url);//跳转链接

}

//页面将跳转至 redirect_uri?code=CODE&state=STATE

//处理请求结果

$code = $request->code;

$qywx =new \App\Libs\QyWeixinClass();//此处代码实现会在文章最后给出

$accessToken = $qywx->getAgentAccessToken();

$url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=$accessToken&code=$code";

$res = $qywx->httpGet($url);

$res = json_decode($res);

b.返回结果有两种

当该用户为企业成员时返回

{

"errcode": 0,

"errmsg": "ok",

"UserId":"USERID",

"DeviceId":"DEVICEID",

"user_ticket": "USER_TICKET",

"expires_in":7200

}

非企业成员授权时返回

{

"errcode": 0,

"errmsg": "ok",

"OpenId":"OPENID",

"DeviceId":"DEVICEID"

}

c.根据自己的业务逻辑需求去调整应该怎么处理企业用户和非企业用户

判断请求是否正确返回数据

if (''==$res||$res-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值