微信公众号授权---第三方平台(php)

2018年02月06日 17:31:59 不如喫茶去 阅读数:6735

版权声明:本文为本小白原创文章,(转载请说明出处,标明链接) 文中若有错误,敬请指正!——————编程不过是一门失传的艺术的别名,这门艺术的名字叫做“思考”。 https://blog.csdn.net/qq_32737755/article/details/79272861

用过微擎、微赞、微动力等第三方公众号管理平台的人都知道,需要在这些平台中接入公众号(就是授权给第三方平台),为了了解探究微擎中扫码授权的机制,看了微信开放平台中的第三方平台开发,并做了实例,写下此文纪念我这一天遇到的坑!!!

公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务


第一个注意点:申请的时候有一个校验文件,需要放到根目录 

第二个注意点:测试公众号 已授权的第三方平台不要超过5个,不然后续授权会出错,请看http://www.pc0359.cn/article/jiaocheng/68434.html

第三个注意点:消息校验Token和消息加解密Key 可以自己填写,不需要纠结去哪获取

第四个注意点:测试授权的时候一定要用填写的 授权测试公众号 ,用其他的公众号也会报错


本文适合小白、或初探第三方平台的人看,大神请不要吐槽~此文主要写授权流程

我们小小码农初看官方文档肯定会有懵逼的感觉,云里雾里,官方文档说的不太明白。

官网步骤一:要先获取什么pre_auth_code,但是获取pre_auth_code需要先获取component_access_token,而获取component_access_token需要先拿到component_verify_ticket…

这个关系略坑,按照代码顺序来说其实是如下这样的: 
component_verify_ticket->component_access_token->pre_auth_code

然后才能引入用户进入授权页,即扫码将公众号的接口权限赋于第三方平台。

最坑的一点就是获取component_verify_ticket,需要用加密协议…这一点让我迷惑了好几个小时…还是通过百度之后才得以解决,获得了这个ticket。

我分了四个文件来写授权,以下是示例代码

官方的示例代码:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip

1.第一个文件accept.php获取component_verify_ticket:(此文件需要和官方下载的php文件夹内的加解密文件放一起,微信服务器推送ticket的时候会生成ticket.log文件) 
 
在此要感谢这篇文章:http://blog.csdn.net/heysteria/article/details/50041163

accept.php:

define('LOGPATH', dirname(__FILE__));
include_once "wxBizMsgCrypt.php";//以下三个变量,自己去开放平台上管理中心根据实际情况填写。
$encodingAesKey = '自己填写的消息加解密Key ';
$token = '自己填写的消息校验Token';
$appId = '自己的appid';$timeStamp  = empty($_GET['timestamp'])     ? ""    : trim($_GET['timestamp']) ;
$nonce      = empty($_GET['nonce'])     ? ""    : trim($_GET['nonce']) ;
$msg_sign   = empty($_GET['msg_signature']) ? ""    : trim($_GET['msg_signature']) ;
$encryptMsg = file_get_contents('php://input');
$pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId);$xml_tree = new DOMDocument();
$xml_tree->loadXML($encryptMsg);
$array_e = $xml_tree->getElementsByTagName('Encrypt');
$encrypt = $array_e->item(0)->nodeValue;$format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>";
$from_xml = sprintf($format, $encrypt);
logResult('/form.log', $from_xml);
// 第三方收到公众号平台发送的消息
$msg = '';
$errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg);
if ($errCode == 0) {//print("解密后: " . $msg . "\n");$xml = new DOMDocument();$xml->loadXML($msg);$array_e = $xml->getElementsByTagName('ComponentVerifyTicket');$component_verify_ticket = $array_e->item(0)->nodeValue;file_put_contents(LOGPATH.'/ticket.log', $component_verify_ticket);logResult('/msgmsg.log','解密后的component_verify_ticket是:'.$component_verify_ticket);echo 'success';} else {logResult('/error.log','解密后失败:'.$errCode);print($errCode . "\n");
}
function logResult($path,$data){file_put_contents(LOGPATH.$path, '['.date('Y-m-d : h:i:sa',time()).']'.$data."\r\n",FILE_APPEND);
}
die(); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

2.通过第一步就可以获取到component_verify_ticket了(从ticket.log中拿到),然后获取component_access_token

/*** http/https请求函数*/
function https_request($url,$data=null){$curl = curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);if(!empty($data)){curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);}curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);$output = curl_exec($curl);curl_close($curl);return $output;}
$url = "https://api.weixin.qq.com/cgi-bin/component/api_component_token";
$data = array("component_appid"=>"你的appid","component_appsecret"=>"你的appsecret","component_verify_ticket"=>"SPt1dEQx-QFn5MAXQ4zVmM1w1QBRlKGSHHnd6ebMCzJx21A_0RPaUHCovYNJUR6z-iYM-1c_asp0m1zoheT99g");
$send_result = https_request($url, json_encode($data));
$send_result = json_decode($send_result,true);
var_dump($send_result);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

3.通过上一步拿到component_access_token,换取pre_auth_code

$token = "6_36ssst_zdzZ8sxcBn6P_-OiyM-dOVfrgBf2kEG4PCJyMu0oiMACiRXGn_zhq13j1QuXWCdL3EdTdGJb4-MTJAFTcsedQkU4Ghi7pyS5410tElXsc9vhq5D18xHDgF2t2G93o8bL-l05xVHFHAXdAGAMFC";$url = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token={$token}";
$data = array("component_appid"=>"你的appid");
$send_result = https_request($url, json_encode($data));
$send_result = json_decode($send_result,true);
var_dump($send_result);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.通过第三步就可以获取到pre_auth_code了,然后就能授权啦

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>授权测试页</title>
</head>
<body><a href="https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=wxd8f2bd0718eb0143&pre_auth_code=preauthcode@@@3RFasdaRgPvceKww4LvN4655IvvBXu7ZsqkMjb9VX7AP-0hsujUEMGO7k1yBlw3F&redirect_uri=http%3A%2F%2Fwww.10088.cn" id="authurl" style="display: inline;">
<img src="https://open.weixin.qq.com/zh_CN/htmledition/res/assets/res-design-download/icon_button3_1.png">
</a></body>
</html>    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

效果如下: 

点击就可以授权啦!

授权失败记的看一下上面我说的注意点!!!

微信第三方平台相关的转发相关推荐

  1. 微信第三方平台-授权流程经验分享

    原文地址: www.jianshu.com/p/67836ffa9- 在做微信第三方平台开发的时候,虽然授权的技术实现流程比较简单,但是相对于一个key直接集成的一些其他的服务来说,还是有一些步骤,过 ...

  2. 微信第三方平台的开发过程一

    整理一下最近研究微信第三方平台的一些东西 注意的东西: 第一,不要以为微信的UID机制与第三方平台绑定有关.这个机制,相对第三方平台就是一个鸡肋的东西,只适合一家公司管理十个以内的公众号用的.多的就没 ...

  3. 用微信第三方平台授权小程序业务

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 本文章转自php中文网:http://www.php.cn/weixin-kaifa-4069 ...

  4. 微信第三方平台小程序平台设计

    今天是2023年1月15日,距离2023春节倒计时7天.在此,我分享一下个人对于微信第三方平台小程序的理解以及搭建一个微信小程序及云端服务的一些个人经验,作为交流. 首先,一个第三方平台小程序要定位是 ...

  5. 打通微信小程序自动化部署最后一步-微信第三方平台

    之前在公司搭建了一个前端部署平台(cb-cycle),涉及小程序.网页应用的部署.(流程节点可自定义开发,原则上任意程序都可以实现部署,甚至不至于部署). 无奈小程序自动化只能到上传代码(minipr ...

  6. 微信第三方平台开发流程和总结

    微信第三方平台开发流程和总结 创建第三方平台 1).在微信开放平台-管理中心-第三方平台中创建第三方平台账号.创建第三方平台 2).选择"平台型服务商类型"创建第三方平台.填写第三 ...

  7. 微信第三方平台研究总结

    微信第三方平台研究总结 一.背景 客户反馈小程序更新不及时导致用户体验不好 客户不想自己审核发布一系列麻烦操作 现阶段小程序采用的是微信ci工具文档,通过Jenkins打包后使用命令上传到微信指定版本 ...

  8. 微信第三方平台开发接入

    微信第三方平台开发接入 授权流程接入步骤如下:( 微信https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=res ...

  9. java微信第三方平台全网发布(三)

    在java微信第三方平台开发(二)中写了授权事件的处理,并且第三方平台代公众号发起网页授权,获取用户信息和发红包等基本业务.接下来代公众号处理消息和事件.这时候就需要用到在开发者资料中填写的公众号消息 ...

最新文章

  1. 关于java输出的一道面试题
  2. POJ2195费用流+BFS建图
  3. cookie获取java_java中如何获取cookie
  4. C语言中单目运算符的结合方向是,C语言运算符的结合性
  5. Java实例_综合实践5.简单工厂模式
  6. 17行代码AC——L1-030 一帮一 (15分)(解题报告)
  7. Android之在在EditText的xml里面配置了相关属性依然没有显示光标问题
  8. python遗传算法计算实例_遗传算法python简单例子(详解)
  9. Drools 6.5 :入门程序
  10. 被问到一个简单的脚本后
  11. Linux基础知识点
  12. AI团队领头人携耗资数十万项目案例,价值2W+的5堂直播课,限时免费Get!
  13. 以太坊智能合约开发第五篇:字符串拼接—Solidity
  14. 图片和Base64编码相互转换
  15. 高中计算机编程语句,高中信息技术程序设计知识点.doc
  16. 可能是最全的Kotlin协程讲解
  17. (2)响应式流——响应式Spring的道法术器
  18. [论文阅读笔记]DeepFool: a simple and accurate method to fool deep neural networks
  19. html网页制作提交注册信息,利用HTML表单标签编写一个注册页面
  20. clcl.bz index.php,BZPHP

热门文章

  1. 吴恩达深度学习CNN作业:Convolutional Neural Networks: Step by Step
  2. ThinkPHP5最新URL访问:PATH_INFO和兼容模式
  3. 如何安装、管理多个 NodeJS 版本?
  4. python pexpect 学习与探索
  5. 如何估算太坊交易的gas消耗量
  6. 全连接层的作用_全连接层实现
  7. redis 通过aof日志恢复_Redis从入门到精通(四、Redis的持久化和数据备份与恢复)
  8. Docker配置国内加速镜像源
  9. Linux(RedHat)下Weblogic 12C静默安装
  10. pgsql 筛选中文字符正则_PostgreSQL正则及模糊查询优化