1.项目构建与微信授权

1.项目构建

1.1.环境准备

1.1.1.运行环境

	系统:Centos=>7.2
	PHP=> 7.3
	swoole=>4.15
	mysql=>8.0
	lavaral=>6.18
	composer(版本没要求)
	node.js(版本没要求)

1.1.2.运行环境搭建

1.1.2.1.php+swoole+mysql
	推荐使用宝塔(略)
	yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
1.1.2.1.laravel安装
	composer create-project --prefer-dist laravel/laravel blog "6.*"

2.微信授权登录

2.1.微信测试号申请

2.1.1.账号申请

	微信公众号测试号获取地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

在这里插入图片描述

2.1.2.账号设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.laravel微信授权登录

网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
/www/wwwroot/lms/blog/app/Http/Controller/WeChateController.php
<?php
public function wxcode()
{
  //微信授权登录相关信息
  $params = http_build_query([
  'appid' => 'wx3fcdb70eb5f80571', //微信公众平台提供的appid
  'redirect_uri' => 'http://blog-shop.com/wxtoken', //你想要回调的地址
  'response_type' => 'code',
  'scope' => 'snsapi_userinfo',
]);
  //第一步:用户同意授权,获取code
  $url = $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' . $params . '#wechat_redirect';//获取用户code接口
  return redirect($url);
}
?>
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
/www/wwwroot/lms/blog/app/Http/Controller/WeChateController.php
<?php
public function wxtoken(Request $resquest)
{
  #根据拿到的code值去访问用户的access_token令牌
  $params = http_build_query([
          'appid' => 'wx3fcdb70eb5f80571',
          'secret' => '0864a3720d5972c8bbb49e029cbd033f',
          'code' => $resquest->input('code'),
          'grant_type' => 'authorization_code'
  ]);
  $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . $params;
  $result = file_get_contents($url);
  $access_token = json_decode($result);
  dd($access_token);
}
 ?>
3、如果需要,开发者可以刷新网页授权access_token,避免过期(这里只需要根据上面的接口一样进行数据获取即可) 
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
/www/wwwroot/lms/blog/app/Http/Controller/WeChateController.php
<?php
public function wxtoken(Request $resquest)
{
  #根据拿到的code值去访问用户的access_token令牌
  $params = http_build_query([
          'appid' => 'wx3fcdb70eb5f80571',
          'secret' => '0864a3720d5972c8bbb49e029cbd033f',
          'code' => $resquest->input('code'),
          'grant_type' => 'authorization_code'
  ]);
  $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . $params;
  $result = file_get_contents($url);
  $access_token = json_decode($result);

  $params = http_build_query([
    'access_token' => $access_token->access_token,
    'openid' => $access_token->openid,
    'lang' => 'zh_CN'
  ]);

  $url = "https://api.weixin.qq.com/sns/userinfo?".$params;
  $UserInfo = json_decode(file_get_contents($url));
  dd($UserInfo);
}
?>
配置路由
/www/wwwroot/lms/blog/routes/web.php
<?php
Route::get('/', function () {
    return view('welcome');
});
Route::get('wxcode','WeChateController@wxcode');
Route::get('wxtoken','WeChateController@wxtoken');
?>
运行结果

在这里插入图片描述

2.3.esaywechat微信授权登录

2.3.1 安装

	composer require "overtrue/laravel-wechat:~5.0"

2.3.2 laravel整合

	创建配置文件
	php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
	修改配置文件
/www/wwwroot/lms/blog/config/wechat.php
  /*
     * 公众号
     */
    'official_account' => [
        'default' => [
            'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'wx3fcdb70eb5f80571'),         // AppID
            'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', '30f97ea22284973ec18efe628ef69562'),    // AppSecret
            'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', ''),           // Token
            'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''),                 // EncodingAESKey

            /*
             * OAuth 配置
             *
             * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
             * callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。)
             */
            'oauth' => [
                'scopes'   => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
                'callback' => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
            ],
        ],
    ],

/www/wwwroot/lms/blog/.evn

WECHAT_OFFICIAL_ACCOUNT_APPID = wx3fcdb70eb5f80571
WECHAT_OFFICIAL_ACCOUNT_SECRET = 30f97ea22284973ec18efe628ef69562
注册中间件
/www/wwwroot/lms/blog/app/Http/Kernel.php 中的 protected $routeMiddleware 节点添加
'Auth.WeChat' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class,
/www/wwwroot/lms/blog/config/app.php 中的 providers与 节点中添加

'providers' => [
  ...
  \Overtrue\LaravelWeChat\ServiceProvider::class,
]

'aliases' => [
  ...
  'EasyWeChat' => \Overtrue\LaravelWeChat\Facade::class,
]
创建测试路由,添加中间件

Route::get('wechat/auth', function(){
$wechat = session('wechat.oauth_user.default'); //拿到授权用户资料
dd($wechat); //打印出授权用户资料})->middleware('Auth.WeChat');

2.3.3 常见问题

在这里插入图片描述

这个错误是因为我们并没授权登录,在esaywechat拉取授权登录信息的时候重定向头信息验证出现异常。
解决:可以通过修改中间件代码去解决问题
修改 \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate 中的handle方法代码,如下:
<?php
session([$sessionKey => $officialAccount->oauth->userFromCode($request->get('code')) ?? []]);
修改为:
session([$sessionKey => $officialAccount->oauth->user() ?? []]);

return redirect()->to($officialAccount->oauth->scopes($scope)->redirect($request->fullUrl()));
修改为:
return r$officialAccount->oauth->scopes($scope)->redirect($request->fullUrl());
?>

在这里插入图片描述

这个错误是因为id为int导致的remember_token不通过auth。
解决:可以通过修改中间件代码去解决问题
在/www/wwwroot/lms/blog/app/user.php 加上代码,如下:
public $incrementing = false;//设置主键非自增
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值