解决微信公众平台IP白名单

微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱。正如它的广告词所说:再小的个体,也有品牌

好吧,闲话不多说,今天要说的是它的IP白名单机制。

 

我们现在安装的大部分都是电信的家庭宽带,它的公网IP是随机的,当然也可以加钱变成固定IP,也可以通过其他软件映射,都可以变成固定IP

我说的这个方案,也算其中一种吧,就是通过WebAPI方式,把某一台机器的公网IP固定,然后访问公众号的程序部署在这上面,最后这些程序再通过WebAPI方式被其他客户端调用

好了,还是上代码吧

//3,需先将封面上传至目标公众号
//3.1,下载原公众号中封面图片.判断是否存在?不存在,则下载
//注:需判断文件夹是否存在?若不存在,则创建
string folderName = CurrentAppInfo.AppPath + @"\MaterialFile\thumb\";
if (!Directory.Exists(folderName))
{
    Directory.CreateDirectory(folderName);
}
string fileFullName = folderName + sourceThumbMediaId + ".png";
FileInfo fi = new FileInfo(fileFullName);
if (!fi.Exists)
{
    string sourceAccessToken = this.wxpService.GetAccessToken(this.sourceSourceID);
    Stream imageStream = this.wxpService.GetMaterial(sourceAccessToken, sourceThumbMediaId);
    Image image = Image.FromStream(imageStream);
    Bitmap bitmap = new Bitmap(image);

    bitmap.Save(fileFullName);
}

//3.2,再上传至目标公众号
//此处是上传封面图片
string targetAccessToken = this.wxpService.GetAccessToken(this.targetSourceID);
UploadMaterialApiResultModel modelApiResult1 = this.wxpService.UploadMaterialAny(targetAccessToken, new wxpmaterialBillModel()
{
    IsTemp = "0",
    FileFullName = fi.FullName,
    MaterialType = MaterialType.thumb.ToString()
});
string targetThumbMediaId = modelApiResult1.media_id;

//3,加工数据
wxpapiaccountBillModel modelSourceApiAccount = this.listApiAccount.FirstOrDefault(c => c.SourceID == this.sourceSourceID);
wxpapiaccountBillModel modelTargetApiAccount = this.listApiAccount.FirstOrDefault(c => c.SourceID == this.targetSourceID);
content = content.Replace(modelSourceApiAccount.SourceCode, modelTargetApiAccount.SourceCode);
content = content.Replace(modelSourceApiAccount.SourceName, modelTargetApiAccount.SourceName);

//二维码图片可能有多个,分隔符是:分号
//注:目标地址只获取第1个即可
string[] qrcodeUrl1s = modelSourceApiAccount.QRCodeUrlPath.Split(';');
string qrcodeUrl2 = modelTargetApiAccount.QRCodeUrlPath.Split(';')[0];
foreach (string qrcodeUrl1 in qrcodeUrl1s)
{
    content = content.Replace(qrcodeUrl1, qrcodeUrl2);
}

UploadNewsModel modelUpload = new UploadNewsModel()
{
    title = title,
    author = author,
    digest = digest,
    content = content,
    content_source_url = targetSourceUrl,
    show_cover_pic = "0",
    thumb_media_id = targetThumbMediaId
};

//4,上传素材至目标公众号
UploadMaterialApiResultModel modelResult = this.wxpService.UploadMaterialNews(targetAccessToken, new List<UploadNewsModel>() { modelUpload });

//4.1,需标记源公众号中此素材已转发
wxpmaterialBillModel modelEditToSource = new wxpmaterialBillModel()
{
    SourceID = this.sourceSourceID,
    MaterialCode = this.sourceMaterialCode,
    IsTranspond = "1",
    ActionName = "SetIsTranspond",
};
this.wxpService.UpdateMaterial(new List<wxpmaterialBillModel>() { modelEditToSource });

 

如上图所示,这是实现图文素材从公众号A复制至公众号B里的代码,这种情况下,我每天在家里打开电脑时,都要在IP白名单中重新设置下电脑的公网IP,不然,会提示

 

改成下面的代码就可以轻松解决,我把程序部署到阿里云上,so easy,换个思路,又是一片新的天空。

copymaterialQueryModel copymaterialParamModel = new Base.Models.copymaterialQueryModel()
{
    sourceSourceID = this.sourceSourceID,
    sourceMaterialCode = this.sourceMaterialCode,
    targetSourceID = this.targetSourceID,
    title = title,
    digest = digest,
    author = author,
    targetSourceUrl = targetSourceUrl,
    wxAccessToken = wxAccessToken
};
UploadMaterialApiResultModel modelResult = WebAPIHelper.WebAPIPostData<UploadMaterialApiResultModel>(ControllerName.WXPublicApi, WXPublicApiActionName.CopyMaterial.ToString(), copymaterialParamModel);

 

最后,发布一个彩蛋,做自媒体的可以看看

Navi.Soft31.微信WinForm框架(含下载地址)  

Navi.Soft31.产品.登录器(永久免费)

 

时间: 2024-11-13 06:44:47

解决微信公众平台IP白名单的相关文章

解决Linux下微信公众平台网页版音频无法播放的方法

有人在Linux系统中发现了一个有趣的问题,那就是网页版微信公众平台上,音频文件无法播放.这就意味着在Linux系统中无法收听到对方发过来的语言消息.这个问题如何解决呢? 解决办法: 1.修改浏览器的标识为Windows的即可. 2.如果是firefox用户可以使用插件 User-agent Switcher,方便的在各标识之间切换. Linux下微信公众平台网页无法播放音频的原因就是:微信公众平台的网页不支持Linux浏览器的标识.所以只要把Linux浏览器切换成其他平台的标识就可以了.

php版微信公众平台回复中文出现乱码问题的解决方法_php技巧

本文实例分析了php版微信公众平台回复中文出现乱码问题的解决方法.分享给大家供大家参考,具体如下: 微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看. 很多微信公众平台的自动回复程序都是 ThinkWechat.class.php 这个类开发的,今天碰到一个莫名其妙的乱码问题,查问题发现是GB2312编码导致,所以要修改源码. 先增加一个方法: /** * 检测是否UTF-8 * @param $str * @return boo

Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题     从这篇文章中我们已经了解了微信公众平台消息传递的方式,这种方式有一个先天的缺陷:不同用户的请求都来自同一个微信服务器,这使得常规的Session无法使用(始终面对同一个请求对象,况且还有对方服务器Cookie是否能保存的问题).     这就要求我们自己建立一套独立的对话上下文请求机制.     上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(六)

在微信公众平台做HTML 5游戏的一些经验

最近微信公众游戏平台讨论得如火如荼,大有HTML5游戏即将引燃之势. 磊友科技赵霏自称HTML5技术鼓吹者,手机游戏 第一代制作者.他关于在微信平台做HTML5游戏的分享具有非常地参考价值,从中可以了解目前HTML5游戏发展的现状和困难 .更值得关注的是这些困难作为开发者,我们如何去解决. 全文原文如下: 最近码了一篇文章,总结了自己做 HTML5游戏的微信公众平台这一个月以来的酸甜苦辣感受,分享给大家,欢迎拍砖. 首先要向我所有微信好友,朋友 圈,群组里的朋友们道声歉.在长达三十天的微信手机页

微信公众平台开发问答-20161215

================================================================ 消息分组:QQ群 518924126================================================================消息对象:微信平台开发有问必答群================================================================ 2016-11-16 18:15:33 [师

微信公众平台模版消息

  微信服务号模板消息功能 微信公众平台新增"模板消息功能",该功能允许服务号运营者事先设计好信息框架,如果用户与微信服务号产生数据交换,替代模板消息中的数据,即可直接生成信息给用户. 模版信息依行业进行划分,并根据使用场景不同设计了不同的模版,如酒店旅游行业下就设计了入驻提醒.团购通知.会员充值等各种消费场景下可能使用到的模版.     据了解,很多服务号很早以前就开始采用该功能,该功能的实际体验还是很优秀的. 有趣的是,模板消息在公众平台后台的介绍中,还包括价格的信息,注明的是:测

微信公众平台(测试接口)准备工作_java

1.申请微信公众号 我们要进行微信公众平台的开发,第一步当然是要有公众号了.什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵.通俗的说,我们微信平台就好像是一个大社会,里面有个体人,也有各种组织机构.你自己使用的普通微信号就是个体人,而公众号就是那些组织,这些组织又分为2类:一类是提供各种信息的,称为订阅号:另一种是提供各种服务的,称为服务号.当然,目前个人只能申请到订阅号,只有组织机构,比如公司等才能申请到服务号. 订阅号和服务号的区别在哪里呢?简单的说,服务号旨在为用户提供服务.你

微信公众平台开发时遇到的两个js问题

问题描述 微信公众平台开发时遇到的两个js问题 详细问题描述如下: 1.关于微信JS-SDK使用微信测试账号测试过程中,在接口权限表中没有提供相应的绑定域名设置时,并且也没有两个经过认证过的正式公众号时(一个生产环境,一个测试环境),该如何进行测试,谢谢! 如果无法解决第1个问题的话,使用普通的测试账号进行测试时,则出下面第二个问题: 2.如果不使用域名,直接用ip进行JS-SDK调用config 接口的时候,提示invalid url domain错误,也就是<微信JS-SDK说明文档>附录

PHP Curl模拟登录微信公众平台、新浪微博实例代码_php实例

使用curl之前先打开curl配置,具体方式百度一下就知道,开启curl扩展.密码用md5加密,这是经过测试成功的,把用户跟密码改成你的就行了. 下面一段代码给大家介绍php使用curl模拟登录微信公众平台,具体代码如下所示: <?php //模拟微信登入 $cookie_file = tempnam('./temp','cookie'); $login_url = 'https://mp.weixin.qq.com/cgi-bin/login'; $pwd = md5("********