微信公众号开发——服务器配置及token验证
[前言]:因为自己第一次配置开发者模式是2015年底,当时是SAE的应用,现在申请了一个阿里云的服务器,根据官方文档尝试一晚上无果,自己又找资料成功完成启用微信公众号后台开发者模式的服务器设置。
一、前提
1、购买一台云服务器
必须要有公网IP,可以没有域名,我选择安装的是CentOS 7.5的系统。(这里我是用的最后一个月的学生优惠9.9买了台阿里云玩玩);
2、配置安全组
添加一条可以访问80端口的安全规则。
3、远程连接
(1)在阿里云的管理平台上直接登入
用户名默认root
密码是购买的时候设置的用户密码,忘记的话可以在控制台重置密码。
(2)使用Xshell、SecureCRT、Putty等软件远程登入
这里推荐使用Xshell,用户名密码同上。
4、搭建服务
以下是远程登入后,在命令行中操作。全部在命令行中操作完成的。
(1)安装python2.7以上版本
CentOS7.2自带python2.7.5,readline-devel 如果没有安装的话,会造成进入python解释器上下左右回退键都输入不正常。
yum install -y readline-devel
如果缺少openssl-devel的话,访问https会无法工作。
yum install -y openssl-devel
下载
cd /tmp wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
解压缩
tar -xJvf Python-2.7.12.tar.xz
编译
cd Python-2.7.12/ ./configure --prefix=/usr/local/python2.7 make make install
链接
ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin/python
由于系统自带的python路径是/usr/bin/python。PATH中,/usr/local/bin比/usr/bin靠前,所以当你输入python,系统会自动启动你安装的python2.7.12。
echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
在python脚本中,你可以使用env来搜寻python
#!/bin/env python
这样,CentOS7.2调用的也是你安装的2.7.12。好处是当你在别的环境里运行,不需要改第一行也能执行。当然你也可以使用绝对路径:
#!/usr/local/bin/python
这样当在别的环境中执行,你需要用sed把第一行的路径替换下。
(2)安装web.py
先安装 easy install:
yum install python-setuptools
安装完成,输入:
easy_install web.py
(3)安装libxml2, libxslt, lxml python
yum install libxml2
yum install libxslt
yum install lxml python
(4)编辑代码,如果不懂python 语法,请到python官方文档查询说明。
vim main.py
点击“i”,进入编辑模式,输入以下代码:
# -*- coding: utf-8 -*- # filename: main.py import weburls = ('/wx', 'Handle', )class Handle(object):def GET(self):return "hello, this is a test"if __name__ == '__main__':app = web.application(urls, globals())app.run()
点击“ESC”,退出编辑模式,输入“:wq”,退出编辑器并保存。
(5)开启服务
如果出现“socket.error: No socket could be created“错误信息,可能为80端口号被占用,可能是没有权限,请自行查询解决办法。如果遇见其他错误信息,请到web.py官方文档,学习webpy 框架3执行命令:
sudo python main.py 80
(6)测试
在浏览器输入http://外网IP:80/wx,可以看到类似于如下的页面:
这表明一个简单的web应用已搭建完成。
5、部署LAMP
即Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,
参考阿里云官方文档:
https://help.aliyun.com/document_detail/50774.html?spm=5176.doc52954.6.722.t92kLG
完成LAMP的部署;
6、修改index.php
代码参考官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
如下:
<?php
/** * wechat php test */ //define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid(); class wechatCallbackapiTest
{ public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>"; if(!empty( $keyword )) { $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; } }else { echo ""; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } }
} ?>
其中:
define("TOKEN", "weixin");
第7行是用户定义的“token”,需要与下面将会提及的令牌(Token)相同。
安装Linux/Unix同Windows进行ZModem文件传输的命令行工具:
yum install lrzsz
完成后在命令行中输入“rz”,选择本地文件并上传。
想要删除文件输入:
rm -f 文件名
从服务器下载文件的命令是:
sz 文件名
我在使用putty的时候rz一直无法完成上传,换用Xshell顺利解决。
二、公众号开发信息
1、启用开发者密码(AppSecret)
直接扫码完成验证,开启后保存好密码即可。
2、IP白名单
三、服务器配置
填写完毕后,提交即可完成服务器配置的启用。
微信公众号开发——服务器配置及token验证相关推荐
- 微信公众号开发--开通测试号及验证消息来自服务器
微信公众号开发--开通测试号及验证消息来自服务器 一.服务器配置 1.开通测试号 2.域名申请(ngrok) 2.1.注册 2.2.下载客户端 二.验证消息来自服务器 一.服务器配置 1.开通测试号 ...
- 2 微信公众号开发 服务器配置 Token验证
服务器配置的主要难点就是Token验证. 官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 接入指南 ...
- 关于微信公众平台的服务器配置和token验证接口
其实关于微信公众号服务器配置的问题 官方描述的已经很清楚了 首先这个URL必须是80端口或者443端口 对应http和https 其次url是验证是否能正确响应token 所以这里填写的就是响应tok ...
- 1 微信公众号开发 服务器配置 有什么用
启用并设置服务器配置后,用户发给公众号的消息以及开发者需要的事件推送,将被微信转发到该URL中. 换句话说,开发者需要监听这个URL,处理数据,并做出反应.
- 微信公众号对接服务器教程,微信公众号开发--服务器配置(傻瓜入门教程)
一.文件准备: 1.下载wx_sample.php(自行百度下载),修改文件名(本人改为api.php),放于服务器某个目录下,此路径为公众平台配置服务器填的时候要用url. 2.打开api文件,修改 ...
- 关于微信公众号配置URL时token验证失败
话不多说,先上个官方文档中的截图 注意,其实官方文档给的东西并不坑,这里token验证失败的问题是 没有按照文档中所说的输出echostr,而这个echostr在哪呢?就在上面人家说的参数里 这里官方 ...
- url 微信公众号开发 配置失效_微信公众号开发者中心配置 Token验证失败 终极解决方案...
请您检查这几项: 1. 在您的URL(服务器地址)页面里,直接Get获取echostr参数打印到页面上. 在火狐浏览器里Firebug里面看到echostr前面多了几个乱码. 把您开发者设置的URL页 ...
- 微信公众号开发——服务器配置
一.前提 1.购买一台云服务器 域名解析 这里用的宝塔服务 创建域名 绑定到指定的目录 wx.php 代码如下 <?php /** * wechat php test */ //define y ...
- 微信公众号 服务器配置 token 测试,微信公众号开发:基本配置Token验证简单事件回复...
公众号配置的URL就是你自己服务器上验证TOKEN的方法的地址 比如我验证TOKEN的方法访问地址是http://www.aaa.cn/wx_api.php 那我公众号配置的URL就要填http:// ...
最新文章
- 互联网公司IT系统架构进化之路
- 【译】如何使用索引视图和一个只有2行的表限制业务规则
- 从搭建脚手架到在npm上发布react组件
- Serverless 时代 DevOps 的最佳打开方式
- 2.3.7 操作系统之管程和java中实现管程的机制
- android 格式格式:YYYYMMDDHH24MISS 的时间戳timestamp
- c++实现web服务框架
- java开发中常用到小方法
- 拦截方法并替换成自己的方法
- 从0开始学习自动化测试框架cypress(二)DOM
- HALCON 21.11:深度学习笔记---术语表(7)
- 实现RPC就是这么简单
- 的列数 获取mysql_阿里面试:MySQL如何设计索引更高效?
- Android对话框
- python进程与线程_Python 进程和线程
- python 序列化之JSON和pickle详解
- IOS--多线程--GCD--在CGD中快速实现多线程的并发控制
- 并发相关随笔(持续更新)
- 中国分布式光纤传感(DFOS)行业竞争现状与未来趋势预测报告2022-2027
- C++ Primer 5th Answers