摘要:需求描述当前商城标识授权第三方开发平台网页授权成功后跳转到另一个商城项目链接并带上当前微信用户信息和微信初始化验证签名第三方平台授权安装引用创建一个跳转到微信扫二维码授权页面开发平台授权跳转跳转方法为什么我不写到上一个方法呢因为微信
需求描述
当前商城(uid标识)授权第三方开发平台.
网页授权成功后跳转到另一个商城项目链接并带上当前微信用户信息和微信初始化验证签名.
第三方平台授权安装easywechat4
$ composer require overtrue/wechat:~4.0 -vvv
引用
use EasyWeChatFactory;
创建一个跳转到微信扫二维码授权页面
/** * 开发平台授权跳转 * * @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 EasyWeChatOpenPlatformServerGuard;
/** * 开发平台授权回调 * * @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); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28747.html
摘要:最近搞微信第三方登录,搞蒙圈了。当你把服务号绑定到开放平台之后,网页授权返回的数据会多一个,同一个微信账号在同一个开放平台账号下的是一致的。 最近搞微信第三方登录,搞蒙圈了。 我们的业务有两个场景需要使用微信第三方登录:1、APP 第三方登录2、H5网页第三方登录,具体流程:用户微信端收到一个二维码--->扫码后同意微信授权-->绑定手机号码 一开始纠结着是不是需要申请公众号,找了个专...
摘要:写在前面本周刚在项目中实现了微信第三方网站扫码登录。准备与注意事项微信公众平台跟微信开放平台是两个不同的平台,别搞混了。参数在微信开放平台中查看。 写在前面 本周刚在项目中实现了微信第三方网站扫码登录。因为第一次写相关项目,所以遇到了很多坑。所以写这篇文章是希望像我之前那样的小白也能从容的开发,不要浪费无谓的时间,这篇文章尽量写的详细简单。准备与注意事项 微信公众平台跟微信开放平台是...
摘要:本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。它的特点就是通过客户端的后台服务器,与服务提供商的认证服务器进行互动能够满足绝大多数开放平台认证授权的需求。 本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。 什么是开放平台 通过开放自己平台产品服务的各种API接口,让其他第三方开发者在开发应用时根据需求直接调用,例如微信登录、QQ登录、微信支付、微博登录...
摘要:本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。它的特点就是通过客户端的后台服务器,与服务提供商的认证服务器进行互动能够满足绝大多数开放平台认证授权的需求。 本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。 什么是开放平台 通过开放自己平台产品服务的各种API接口,让其他第三方开发者在开发应用时根据需求直接调用,例如微信登录、QQ登录、微信支付、微博登录...
阅读 2020·2021-11-19 09:58
阅读 1666·2021-11-15 11:36
阅读 2836·2019-08-30 15:54
阅读 3334·2019-08-29 15:07
阅读 2727·2019-08-26 11:47
阅读 2658·2019-08-26 10:11
阅读 2465·2019-08-23 18:22
阅读 2705·2019-08-23 17:58