2015-06-19 19:28:49 kyfxbl 阅读数 4019

微信打开的网页,屏蔽了app store地址

如果是在微信对话中发送app store的链接,点击就可以直接从微信里跳转到app store的下载页面

但是如果是在网页里放app store的下载链接,不管是长码,短码,

通过

<a href="">

或是

location.href = "";

都不行

解决的办法:

1、把APP上到应用宝,然后放应用宝提供的地址,则会判断机型自动跳转

2、提示用户“在浏览器中打开”

3、把链接转换成二维码,通过“扫描图中二维码”的功能,也可以正常跳转

2018-01-15 22:14:46 MYTLJP 阅读数 4952

用了好几个小时的时间,整理了一下关于公众号的思维导图,由于CSDN不能上传相对应的文件,所以萍子一一的分解开的截图附上来,希望对大家有所帮助哦~
因为是电脑设备自动截图,又鉴于内容比较多,可能不是太清楚,需要的小伙伴们,可以联系我,我可以随时发给你。

学习微信公众号需要的配置

这里写图片描述


微信开发的主体、请求方式、数据类型和环境

主体

这里写图片描述

请求方式

这里写图片描述
这里写图片描述

数据类型和环境

这里写图片描述


开始开发

获取access_token值并存储

这里写图片描述
这里写图片描述


账号管理

生成带参数的二维码

这里写图片描述

长链接转短链接

这里写图片描述


消息管理

获取微信服务器的IP地址

接收普通消息

接收事件推送

被动回复用户消息

这里写图片描述


微信网页授权

微信网页授权步骤

第一步:跳转页面,用户同意授权,获取code

这里写图片描述

第二步:通过code换取网页授权access_token(与普通的access_token不一样,具体见下方)
第三步:如果需要,刷新access_token值

这里写图片描述

第四步:拉取用户信息(需要scope为snsapi_userinfo)
第五步:附,检验授权凭证access_token是否有效,一般用不到

这里写图片描述


微信JS-SDK

说明

这里写图片描述

JS-SDK使用步骤

这里写图片描述

上传图片素材

这里写图片描述


微信公众号

握手协议

这里写图片描述

自定义菜单

自定义菜单类型

这里写图片描述

自定义菜单的设置

这里写图片描述

自定义菜单参数说明

这里写图片描述

获取自定义菜单

这里写图片描述


自定义菜单事件推送/被动回复用户信息

自定义事件推送

这里写图片描述

被动回复用户信息

这里写图片描述

根据菜单类型的点击,被动回复

点击按钮事件

这里写图片描述

公众号首次被某个用户关注的推送

这里写图片描述

微信扫一扫,并展示扫的内容

这里写图片描述

推送图文消息

这里写图片描述

回复图片消息
没有点击按钮

这里写图片描述

2018-04-20 22:56:00 chuangxiange4148 阅读数 2

背景:前段时间,公司有个需求,需要手机浏览器/APP/跳转微信,后面发现原来微信将这功能隐藏在了ticket的生成接中,微信根据ticket在服务端存储匹配,并打开指定的网页,经过全方面测试发现,微信没有直接开放或者提供类似的api给到第三方平台或者开发者。

我们一个技术团队花了非常多的时间研究和突破,终于找到了生成生成跳转微信跳转链接的方式。

有些做技术的,浏览器跳转微信接口,总藏着掖着,一点分享精神都没有,下面将把我研究出来的解决方案。分享给大家,希望对大家有所帮助。

跳转原理分析:

从手机浏览器等非微信环境,跳转到微信,都是利用weixin://dl/business/?ticket=ta428dhj739hg3efe6e  这种形式的微信scheme。就是利用微信提供给这些商家的接口,把我们的链接转换成对应的ticket链接。

在哪儿可以找到微信跳转的接口呢?我们分析跳转链接后,发现了接口的出处。

接口地址:http://weixin.ioptis.cn

到网站上可以申请到微信跳转接口,然后直接调用他们提供的接口,就可以把我们的链接转换成对应的微信跳转链接了。

微信跳转wap跳转微信接口。

转载于:https://my.oschina.net/u/3840791/blog/1798775

2017-08-28 21:25:29 ooiuy450 阅读数 2106

微信网页授权有两种方式,分别是:

静默授权:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

用户授权:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

关于网页授权access_token和普通access_token的区别

1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。

静默授权调用的接口:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap
ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas
e&state=123#wechat_redirect

用户授权接口:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=
code&scope=snsapi_userinfo&state=STATE#wechat_redirect

由于静默授权比较容易,这边就不陈述了,就来讲讲用户授权方式的:
首先在测试号页面中找到如下链接:
这里写图片描述
点击修改按钮:
这里写图片描述
这里配置了域名,后面啥也别加,不然会找不到,点击确定按钮即可。
下面是我的后台服务

@RequestMapping(value = "/hello")
    public String index(){
        return "index";
    }

    @RequestMapping(value = "/detail")
    public String detail(){
        return "detailpage";
    }


    @RequestMapping(value = "/home",method= RequestMethod.GET)
    @ResponseBody
    public void valid(HttpServletRequest request, HttpServletResponse response) throws IOException {
        boolean isGet = request.getMethod().toLowerCase().equals("get");
        String code = request.getParameter("code");
        if (isGet) {
            // 微信加密签名
            String signature = request.getParameter("signature");
            // 时间戳
            String timestamp = request.getParameter("timestamp");
            // 随机数
            String nonce = request.getParameter("nonce");
            // 随机字符串
            String echostr = request.getParameter("echostr");

            PrintWriter out = response.getWriter();
            // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
            if (SignUtil.checkSignature(signature, timestamp, nonce)) {
                out.print(echostr);
            }
            out.close();
            out = null;
        }else{
            userpost(request,response);
        }
    }

    @RequestMapping(value = "/home",method= RequestMethod.POST)
    public void userpost(HttpServletRequest request, HttpServletResponse response) throws IOException   {
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        String str = null;
        String code = request.getParameter("code");
        try {
            Map<String, String> message = MessageUtil.xmlToMap(request);
            String fromUser = message.get("FromUserName");
            String toUser = message.get("ToUserName");
            String content = message.get("Content");
            String msgType = message.get("MsgType");
            String msgId = message.get("MsgId");
            Message ms = new Message();
            ms.setContent(content);
            ms.setFromUserName(toUser);
            ms.setToUserName(fromUser);
            ms.setMsgType(msgType);
            str = MessageUtil.textMessageToXml(ms).replace("\n","").replace(" ","");
            out.print(str);
            out.close();
            out = null;
        }catch (Exception e){
            e.printStackTrace();
        }
    }

按钮菜单:

 private static Button getMenu() {

        String APPID = "wxbc359ccb5e797e11";
        String REDIRECT_URI = "http://gky2jr.natappfree.cc/WeChatProject/wechat/hello";
        String urlscope = "snsapi_userinfo";
        String state = "1";

        BaseButton btn11 = new BaseButton();
        btn11.setName("学霸笔记本");
        btn11.setType("click");
        btn11.setKey("11");

        BaseButton btn12 = new BaseButton();
        btn12.setName("记忆宫殿");
        btn12.setType("click");
        btn12.setKey("12");

        BaseButton btn13 = new BaseButton();
        btn13.setName("逻辑思维");
        btn13.setType("view");

        StringBuilder url = new StringBuilder();
        url.append("https://open.weixin.qq.com/connect/oauth2/authorize?");
        url.append("appid="+APPID);
        url.append("&");
        url.append("redirect_uri="+REDIRECT_URI);
        url.append("&");
        url.append("response_type=code");
        url.append("&");
        url.append("scope="+urlscope);
        url.append("&state=1#wechat_redirect");
        btn13.setUrl(url.toString());

        Sub_Button sub1 = new Sub_Button();
        sub1.setName("菜单一");
        sub1.getSub_button().add(btn11);

        Sub_Button sub2 = new Sub_Button();
        sub2.setName("菜单二");
        sub2.getSub_button().add(btn12);

        Sub_Button sub3 = new Sub_Button();
        sub3.setName("xinbuxing");
        sub3.getSub_button().add(btn13);


        Button menu = new Button();
        menu.getButton().add(sub1);
        menu.getButton().add(sub2);
        menu.getButton().add(sub3);

        return  menu;
    }

当我单击逻辑思维按钮时
这里写图片描述

便会弹出该验证页面
这里写图片描述
值得注意的是我在手机上没有显示该验证页面,本人怀疑是测试号的问题
参考文档
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

2018-08-14 23:06:23 weixin_30563001 阅读数 2908

1.没有配置网页授权 
我们可以根据微信的开发者文档http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 网页授权获取用户验证这一章来排除错误原因。如果确定appid等参数值没有出错,那么很大可能就是你的微信公众号后台的网页授权网址没有填写或者填写的不正确。 
2.网页授权的域名跟 Redirect_uri 所指向的页面的域名不一致 
比如:你授权的 域名是 www.test.com 
你网页跳转的 url 是 http://test.com/test

这两个很明显不是在同一个域名下,你需要把 Redirect_uri 设置为:http://www.test.com/test

 

同时,我要补充的是

 

网页授权回调页面不可以带有http头,不然也会报错

 

2.关于@RequestParam注解使用

@RequestParam是传递参数的.

@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。

public String queryUserName(@RequestParam String userName)

在url中输入:localhost:8080/**/?userName=zhangsan

请求中包含username参数(如/requestparam1?userName=zhang),则自动传入。

接下来我们看一下@RequestParam注解主要有哪些参数:

value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;

defaultValue:默认值,表示如果请求中没有同名参数时的默认值,默认值可以是SpEL表达式,如“#{systemProperties['java.vm.version']}”。

 

 

    原子类型:必须有值,否则抛出异常,如果允许空值请使用包装类代替。

     Boolean包装类型类型:默认Boolean.FALSE,其他引用类型默认为null。

摘选自:

http://www.cnblogs.com/wangchuanfu/p/5913310.html

有兴趣可以看看

 

没有更多推荐了,返回首页