需求描述

1. 当前商城(uid标识)授权第三方开发平台.
 2. 网页授权成功后跳转到另一个商城项目链接并带上当前微信用户信息和微信初始化验证签名.

第三方平台授权

安装easywechat4

$ composer require overtrue/wechat:~4.0 -vvv
引入
use EasyWeChat\Factory;

创建一个跳转到微信扫二维码授权页面

/*** 开发平台授权跳转** @return void*/
public function accessView(){// $uid = Request()->route('uid' , 0);$url = 'http://qgcloud.capsui.com/public/index/wxopen/config?uid=' . $uid;$this->assign('url' , $url);return $this->fetch();
}

跳转方法(为什么我不写到上一个方法呢 因为微信要求同一个地址)

/*** 开发平台跳转授权扫码页** @return void*/
public function config(){$uid = Request()->get('uid' , 0);$config = ['app_id'   => '开放平台第三方平台 APPID','secret'   => '开放平台第三方平台 Secret','token'    => '开放平台第三方平台 Token','aes_key'  => '开放平台第三方平台 AES Key'];$openPlatform = Factory::openPlatform($config);$url = $openPlatform->getPreAuthorizationUrl('http://qgcloud.capsui.com/public/index/wxopen/wxcallback?uid=' . $uid);$this->redirect($url);
}

授权回调(注意:扫码确认授权后他第一次回调不会带uid参数)

引入
use EasyWeChat\OpenPlatform\Server\Guard;
/*** 开发平台授权回调** @return void*/
public function wxcallback(){// 这个表是记录授权成功的//$Wxpublic   = new Wxpublic;// 这个表是记录授权成功后传过来所属uid商城绑定appid//$ShopConfig = new ShopConfig;$get = Request()->param();$config = ['app_id'   => '开放平台第三方平台 APPID','secret'   => '开放平台第三方平台 Secret','token'    => '开放平台第三方平台 Token','aes_key'  => '开放平台第三方平台 AES Key'];$openPlatform = Factory::openPlatform($config);$server       = $openPlatform->server;// 处理授权成功事件-第一次回调// 闭包方法!里面调用外面的方法请在use里面填写$server->push(function ($message) use ($openPlatform /*, $Wxpublic*/) {$authCode = $message['AuthorizationCode'];$res      = $openPlatform->handleAuthorize($authCode);if($res['authorization_info']['authorizer_refresh_token']){//授权成功记录到数据库//$Wxpublic->insert(['appid' => $res['authorization_info']['authorizer_appid'] , 'createtime' => time()]);}}, Guard::EVENT_AUTHORIZED);// 处理授权取消事件-第一次回调// 闭包方法!里面调用外面的方法请在use里面填写$server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) {//处理数据库逻辑//$Wxpublic::appid($message['AppId'])->delete();//$ShopConfig::appid($message['AppId'])->update(['token' => '']);}, Guard::EVENT_UNAUTHORIZED);// 第二次回调会带一个授权code和自定义参数商城id(uid)if(isset($get['auth_code']) && isset($get['uid'])){$res      = $openPlatform->handleAuthorize($get['auth_code']);$appid    = $res['authorization_info']['authorizer_appid'];//数据库逻辑//$isConfig = $Wxpublic::appid($appid)->count();//if($isConfig){//$add = $ShopConfig->where('uid' , $get['uid'])->update(['token' => $appid]);//}}return $server->serve();
}

第三方平台 网页授权&微信JSSDK初始化签名生成

/*** 网页授权调起** @return void*/
public function htmlAccess(){$appid = Request()->get('appid' , 0);$config = ['app_id'   => '开放平台第三方平台 APPID','secret'   => '开放平台第三方平台 Secret','token'    => '开放平台第三方平台 Token','aes_key'  => '开放平台第三方平台 AES Key'];$openPlatform = Factory::openPlatform($config);$data         = $openPlatform->getAuthorizer($appid);$appid        = $data['authorization_info']['authorizer_appid'];$refreshToken = $data['authorization_info']['authorizer_refresh_token'];$officialAccount = $openPlatform->officialAccount($appid , $refreshToken);$oauth           = $officialAccount->oauth;// 回调授权地址$url      = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid";$response = $officialAccount->oauth->scopes(['snsapi_userinfo'])->redirect($url)->send();}

网页授权回调方法

/*** 网页授权回调** @return void*/
public function callbackOpenid(){$appid = Request()->get('appid' , null);$config = ['app_id'   => '开放平台第三方平台 APPID','secret'   => '开放平台第三方平台 Secret','token'    => '开放平台第三方平台 Token','aes_key'  => '开放平台第三方平台 AES Key'];$openPlatform = Factory::openPlatform($config);$data         = $openPlatform->getAuthorizer($appid);$appid        = $data['authorization_info']['authorizer_appid'];$refreshToken = $data['authorization_info']['authorizer_refresh_token'];// 获取微信用户信息 如openid nickname等信息$officialAccount = $openPlatform->officialAccount($appid , $refreshToken);$oauth           = $officialAccount->oauth;$user            = $oauth->user();// 处理wxconfig初始化JSSDK$officialAccount->jssdk->setUrl('http://quguoshop.capsui.com/');$wxconfig = $officialAccount->jssdk->buildConfig(['chooseWXPay'], $debug = true, $beta = false, $json = true);$ShopConfig = new ShopConfig;$shopInfo   = $ShopConfig::appid($appid)->find();// 注意 这里我是带参数跳转到其他TP5项目里面再用缓存处理一下$url = 'http://quguoshop.capsui.com/public/wxoauthCallback?data=' . json_encode($user->toArray()) . '&token=' . $shopInfo['id'] . '&wxconfig=' . $wxconfig;$this->redirect($url);
}

thinkphp5.1+easywechat4 微信开放平台开发相关推荐

  1. 微信开放平台开发常见错误(长期更新)

    微信开放平台开发常见错误 在开发微信第三方平台的时候,会常见一下错误码 42001: 获取access token超时,一般都是第三方平台的access Token失效导致的 47001: data ...

  2. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  3. 微信开放平台开发第三方授权登陆(二):PC网页端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  4. 微信开放平台开发第三方授权登陆

    本文转载自网络,原文链接https://blog.csdn.net/qq_34190023/article/details/81133619 目录 一.前期准备流程 二.具体实现步骤 1.注册邮箱账号 ...

  5. 微信开放平台开发 Tp5 + easyweichat3.X

    微信开放平台开发 Tp5 + easyweichat3.X 需求 总流程 授权 流程 1.公众号管理员登录我们的授权网站 2. 进入微信官方授权网站 3. 公众号管理员微信扫描二维码. 4.点击授权 ...

  6. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  7. 微信开放平台开发(一)

    2019独角兽企业重金招聘Python工程师标准>>> 使用背景 我们的客户都有一个公众号,每个公众号对应的都有用户,但我们的业务是想让这些不同公众号下相同的用户关联起来.所以就选择 ...

  8. 微信开放平台开发第三方授权登陆:微信扫码登录

    一.概述 根据需求,需要拥有第三方微信登录功能,并获取到用户信息. 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 二.前期准备工作 1.注册邮箱账号. 2.根 ...

  9. 微信开放平台开发 微信登录

    在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现微信扫码登录的功能. 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信O ...

最新文章

  1. 定制键盘输入处理(1503)
  2. 牛客第七场 Sudoku Subrectangles
  3. Mahout分步式程序开发 基于物品的协同过滤ItemCF
  4. Java关于equals()方法和“==”逻辑运算符的区别简介
  5. vue-cli创建新项目
  6. 浮躁的国内测试界-2006年测试人员招聘感悟
  7. 2_3 ProxyMode.cpp 代理模式
  8. python迭代-如何对迭代器做切片操作
  9. UNP学习笔记3——基本UDP套接字编程
  10. Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
  11. UISwitch的大小
  12. 如何使用计算机勾绘汇水面积,第八章 地形测量_同济大学:测量学(八)_ppt_大学课件预览_高等教育资讯网...
  13. [转载]快速实现微信扫码关注公众号/用户注册并登陆
  14. 女生最想泡的12种男生!(男生必看)
  15. 【Windows】关于Windows Powershell找不到打不开修复方法
  16. [美国访问学者]J1签证和商务B1签证的区别
  17. PYNQ-z2的学习过程
  18. CP和AP有是什么?有什么区别?
  19. JS获取img图片的原始尺寸高度和宽度
  20. 达克效应 邓宁·克鲁格心理效应

热门文章

  1. 设计模式之七个结构型模式的相关知识,简单易懂。
  2. 白苹果了怎么强制开机_iphone11pro max开机循环白苹果怎么办?
  3. Postgresql 的字符串转数组
  4. 58-Vue高级实战
  5. Dockerfile部署jar
  6. pc接入支付宝支付功能
  7. ~~~~~~~~开始~~~~~~~~
  8. android自定义控制中心仿vivo
  9. vivox9按Android版本,vivo X9真实评测:基于Android6.0系统的Funtouch OS3.0 - vivo X9最真评测:X9也用上高通芯了!性能暴强双摄不错...
  10. IPv6即将来临,IPv6的信息安全?