- 山东枣庄开发网站建设技术高收费低的有哪家?
- 山东济宁开发微信公众号技术高收费低的公司是哪家?
- asp采用access数据库搜索信息时因为日文片假名问题提示“Microsoft JET Database Engine
- 曲径辟幽,asp公众号平台系统获取粉丝列表并入库,对比数据库会员更新会员是否已关注或取关公众号
- 婚介所如何取一个好名字?婚恋公司起名技巧
- 泛旧发黄老旧照片翻新的技巧有哪些
- 纯干货!旧照片翻新就应该这么做
- 河南平顶山市网站建设哪家最专业?价格便宜实惠技术好
- 新手如何进入抖音快手短视频如何入门?小视频直播攻略干货
- 做抖音短视频快手直播小视频怎么赚钱?
- 济宁网站建设
- 婚恋行业如何提升业绩?婚介所怎么提高红娘的工作效率?
联系人:孙工
手机:13305370505
电话:13305370505
邮箱:ccmap@qq.com
地址:济宁市高新区置城国际
伪程序员的福音,对公众号官方接口一知半解,加上对后台处理文档也写不好,百度又搜不到能用的资源,就独辟蹊径曲线救国,用纯asp写了下面的代码。
我们公众号网站平台是asp+access写的,先简单介绍下结构,数据库存放会员的表名叫member,关键字段有wx_openid[存放openid],wx_gzh_off[存放是否关注状态],本次新增了一个字段tongbu,这个用法下面有解释。
第一步,获取粉丝列表
我的办法比较简单粗暴,直接访问接口并通过asp语音获取到源代码,官方接口为:【https://api.weixin.qq.com/cgi-bin/user/get?access_token="&weixin_Access_token&"&next_openid=】,只需要access_token这个值,怎么获取我就不介绍了,官方和百度都有教程,提醒一下这个access_token有效期是7200秒(两小时),所以我这里是调用了数据库(我这个平台设置为需要时就请求一次并存放在数据库)。next_openid如果你的粉丝低于1万就不用填,高于一万就填上后再执行一次。
访问接口后,获取到的网页源码是这样的:
{"total":5693,"count":5693,"data":{"openid":["oVfr41baSm9YtXKQwGyxUtovH6Bs","oVfr41c5ciKQ-5rhIgYd347jdhfo","中间的省略","oVfr41UTDuPi_BedF2ZATg9n3LPA"]},"next_openid":"oVfr41UTDuPi_BedF2ZATg9n3LPA"}
total的值是粉丝总数,count是本次拉取数量,openid就是我们需要的粉丝数据了,我首先把它保存为txt文件【我知道用js读取后处理更方便,无奈水平有限,所以曲线救国】。
第二步,读取txt文件,并提取出需要的粉丝总数和openid数组,下面代码中我都做了注释,实现方法参考注释就行。
第三步,循环数组,并分别查询数据库对比已有会员的openid,如果已经存在的,就修改一次关注状态为1,并在上面提到的tongbu字段里写入一段字码,用于标注本次已经处理过这个会员,如果数据库不存在这个openid,就新建一条,并写入openid、关注状态和标识码。到此,就等于获取到官方的粉丝数据都已经入库并做了标识,那么在字段tongbu里面没有写入标识码的,就都是没有关注或者取关的会员了,我们只需要执行一次标识码不符的会员全部把关注状态设为0。
以上是逻辑,下面贴出代码,供跟我差不多水平的参考使用,如果您水平比较高,希望不要耻笑并给予更好的解决代码,不胜感激!
<%
url="https://api.weixin.qq.com/cgi-bin/user/get?access_token="&weixin_Access_token&"&next_openid="
suijima = Clng(DateDiff("s","1970-1-1 00:00:00",Now))
Function getHtml(url) '以HTML格式备份粉丝列表
Set xh = CreateObject("Microsoft.XMLHTTP")
xh.Open "GET",url,0
xh.Send()
Set MyStream=CreateObject("Adodb.Stream")
MyStream.Type = 2
MyStream.Open
MyStream.WriteText xh.responseText
MyStream.Position = 0
getHtml=MyStream.ReadText
MyStream.Close
End Function
Function tongbu(openid) '执行同步数据库
set rs=server.CreateObject("adodb.recordset")
sql="SELECT * FROM member where wx_openid='"&openid&"'"
rs.open sql,conn,1,3
if not rs.eof then
rs("wx_gzh_off") = 1
rs("home_tj") = suijima
else
rs.addnew
rs("wx_openid") = MyArray(I)
rs("wx_name") = "同步粉丝"
rs("wx_gzh_off") = 1
rs("home_tj") = suijima
end if
rs.update
rs.close
set rs=nothing
End Function
%>
<%
if request("action")="" then
%>
当前粉丝:<%=conn.execute( select="" from="" member="" where="" wx_gzh_off="1")(0)"> 人
这里做个表单,提交到save,我贴不出来,总是被执行
<%
elseif request("action")="save" then
'=============第一步 先讲公众平台官网获取到的粉丝列表写到txt文==================
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
Set Fout = Fso.CreateTextFile(Server.Mappath("fensi.txt")) '保存的TXT文件名
Fout.Write getHtml(url) '写入获取到的指定url网页的源文件
Fout.Close
Set Fout = Nothing
Set Fso = Nothing
'=============写txt文件结束=================================================
'=============读txt文件开始=================================================
set fs=server.createobject("scripting.filesystemobject")
filetxt=server.mappath("fensi.txt")
set txt=fs.opentextfile(filetxt,1,true)
if not txt.atendofstream then
line=txt.ReadAll
if Instr(line, "err")>0 then
response.write"
"
response.end
else
openid = Replace(line,chr(34),"")'将双引号去除,方面后面处理
openid=split(openid,"{openid:[")(1)'截取openid部分
openid=split(openid,"]},next_openid")(0)'截取openid部分,就得到了openid列表
line=split(line,":")(1)'截取第一个冒号后面的代码,这是为了获取粉丝数量
line=split(line,",")(0)'粉丝数量
'response.write "共计:"&line & " 名粉丝
"
MyArray = Split(openid,",")'分割粉丝列表数组
For I = Lbound(MyArray) to Ubound(MyArray)'开始逐个执行
tongbu(MyArray(I))'执行类,把每一个获取到的openid都分别拿到数据库对比一下,同步数据库粉丝
Next
Conn.ExeCute("update [member] set wx_gzh_off=0 where home_tj is null or home_tj<>"&suijima)'将同步后官方没有的openid全部设为未关注
end if
end if
response.write"
"
end if
%>
- 上一个:泛旧发黄老旧照片翻新的技巧有哪些
- 下一个:没有了!
-
11-02泛旧发黄老旧照片翻新的技巧有哪些
-
11-02纯干货!旧照片翻新就应该这么做
-
09-22做抖音短视频快手直播小视频怎么赚钱?