微信开发者工具公众号授权

2018-11-08 14:34:00 weixin_30275415 阅读数 381

1.将安装好的 微开发者工具移动到没有中文路径的地址,然后将   微信开发者工具.exe 更改为英文名字,然后发送到桌面快捷方式

2,按照谷歌配置可跨域的方法配置

 

配置方法(配置的时候请保证 你的软件在关闭状态)

邮件你发送到桌面的快捷方式,然后更改  目标

后面加上 这一句话

--args --disable-web-security --user-data-dir

然后通过这个快捷方式进行打开 微信开发者工具就支持跨域了

转载于:https://www.cnblogs.com/MainActivity/p/9928913.html

2018-06-30 00:32:11 dc282614966 阅读数 35789

一、前言

   这次的项目主要是关于微信公众号的一个开发,本人这次分配的模块是后台微信公众号的支付和退款,第一次接触微信公众的项目刚开始一脸懵逼,开发过程中遇到各种坑,所以想自己写一篇详细的关于微信公众号的开发,希望能对小伙伴们有所帮助!在开发过程中会设计到微信接口的调测,这里使用的微信公众号中提供的开发者工具中的在线接口调测和公众平台测试账号。注:微信支付功能不能使用公众平台测试账号测试,必须部署到正式环境中测试。

二、使用方法

进入到在线接口调试工具页面如下图所示:

详细介绍:

1.第一步:选择上图的接口类型为基础支持,输入测试账号分配的appid和secret,点击检测可以获取到AccessToken,如下图所示:

2.第二步,通过第一步中得到的AccessToken,可以进行其他接口的测试,这里以自定义菜单为例测试。复制第一步中得到的AccessToken到自定义菜单对应的AccessToken位置,然后将事先准备好的菜单复制到body文本框中,然后点击检测,返回OK自定义菜单就设置好了,如下图所示:

3.第三步,查看自定义菜单,在测试账号管理中找测试二维码,用微信二维码扫描关注测试账号就可以看到自定义菜单了,如下图:

附自定义菜单格式:

{
    "button": [
        {
            "name": "便民服务", 
            "sub_button": [
                {
                    "type": "view", 
                    "name": "个人中心", 
                    "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appId=wxef3736bdf19a5639&redirect_uri=http://szmbtest.free.ngrok.cc/weixin/dispatch/PersonalInfo&response_type=code&scope=snsapi_base#wechat_redirect"
                }, 
                {
                    "type": "view", 
                    "name": "预约挂号", 
                    "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxef3736bdf19a5639&redirect_uri=http://szmbtest.free.ngrok.cc/weixin/dispatch/li_room&response_type=code&scope=snsapi_base#wechat_redirect"
                }, 
                {
                    "type": "view", 
                    "name": "费用支付", 
                    "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxef3736bdf19a5639&redirect_uri=http://szmbtest.free.ngrok.cc/weixin/dispatch/Clinic&response_type=code&scope=snsapi_base#wechat_redirect"
                }, 
                {
                    "type": "view", 
                    "name": "报告查询", 
                    "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxef3736bdf19a5639&redirect_uri=http://szmbtest.free.ngrok.cc/weixin/dispatch/report&response_type=code&scope=snsapi_base#wechat_redirect"
                }, 
                {
                    "type": "view", 
                    "name": "咨询互动", 
                    "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxef3736bdf19a5639&redirect_uri=http://szmbtest.free.ngrok.cc/weixin/dispatch/xie_consultation&response_type=code&scope=snsapi_base#wechat_redirect"
                }
            ]
        }, 
        {
            "name": "资料下载", 
            "sub_button": [
                {
                    "type": "view", 
                    "name": "官方网站", 
                     "url": "http://www.szmbzx.com/"
                }
            ]
        }
    ]
}

三、注意事项

要想使关注的测试账号能真正的访问到后台,需要在测试管理页面中配置一些参数。

1.接口信息配置和JS接口安全域名配置

           下图中的域名是使用ngrock代理生成的外网可访问的域名,改域名是免费,但不是很稳定经常容易掉线。

2.网页授权获取用户基本信息配置

   还是在测试账号管理页面中,往下拉找到网页账号对应的网页授权获取用户基本信息,点击右侧修改,然后数据域名,该域名与第一条中涉及到域名相同,如下图:

 

有兴趣的朋友可以关注下本人的微信公众号:“JAVA菜鸟程序猿”

 

 

 

2018-12-20 11:32:37 weixin_44185377 阅读数 2677

微信开发者工具调试微信网页授权,点击‘登录’按钮无效

问题描述

h5页面需要获取微信用户信息,参考 微信开发者文档,一步步走到用开发者工具调试页面,却发现点击登录按钮没有反应!如下
微信授权页面
看日志信息
在这里插入图片描述
好吧,说这个图片路径是http,而应该是https,可是这是微信自己的页面啊,怎么改???
然鹅不是这个原因,偶然发现点击按钮上边缘是有效的,点击之后重定向页面,跟文档描述的一模一样。为什么点击上边缘有效,而点击按钮无效?如果你也是这样,那么请打开电脑设置—字体大小–看看是不是125%???
现在,把字体设置成100%,重新打开微信开发者工具,再去调试上面的页面,你会惊喜地发现,点按钮可以了。

原因

电脑设置的字体大小(非100%)的时候,会影响微信开发者工具dom节点事件绑定的位置,根据表现来看,并不影响渲染。

补充一下

过程中call_me_small_pure的博客 给了很大帮助,感谢!

2019-12-12 20:18:56 qq_31752115 阅读数 224

微信公众号的开发者配置中的微信开发工具中明明已经正确绑定开发者账号,但微信开发者工具还是弹出“未绑定网页开发者”,坑了好久,记录下

原因:

1.微信公众号的开发者配置中的微信开发工具中没有绑定开发者账号;

2.调用支付授权接口所传递的参数中的appid和公众服务号的appid 。

我就是第2个原因,我是查看授权接口的参数才找到appid不对号,坑了好久。找到原因后我就找到ecshop的平台后台管理系统的系统设置中的支付方式的微信支付,编辑配置对应服务号的appid ,解决完毕。

2018-07-27 13:42:02 BThinker 阅读数 25377

 

微信公众号开发之授权登录

1、微信公众号技术开发文档阅读

微信公众号的开发首先对开发文档的阅读,技术版本可能有变化,博客里面的内容一段时间过后,可能就出现有些小问题。

微信公众号技术开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

2、微信公众号开发工具

微信公众号开发工具,可以使用微信web开发者工具,可以很好的模拟微信公众号开发的大部分功能(微信公众号支付不行,目前,其他,如授权登录,消息模板,地理位置等等都是可以的)。

微信web开发者工具:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140

只要关注就行,使用测试号,其他的账号使用需要关注你的测试号才能使用。

3、授权登录开发准备

3.1、使用第三方工具,生成内网映射,可以使用花生壳,生成一个可用的域名,在授权的时候使用

花生壳地址:https://hsk.oray.com/

3.2、可以使用微信公众号的测试号,项目上线请申请认证号,认证需要一些费用,但对于微信公众号的大部分的功能实现,已经足够了,目前微信公众号开发的微信支付是不支持的。

申请测试账号,微信公众平台:https://mp.weixin.qq.com/

3.3、微信公众号授权登录的微信开发配置,网页授权获取用户基本信息修改

域名是从花生壳中获取,在授权回调页面域名中不要加上http://,目前微信公众号开发的配置路径都是一样,不要添加http://

这边有一个注意的地方,认证号即上线的时候微信公众号授权登录,需要上传一个文件到服务器中,这个在微信公众号认证号的配置的时候是有提示的,只需要上传认证文件,到服务器就行了。

4、微信授权登陆开发的步骤

1 第一步:用户同意授权,获取code

2 第二步:通过code换取网页授权access_token、openid

3 第三步:刷新access_token(如果需要)

4 第四步:拉取用户信息(需scope为 snsapi_userinfo)

snsapi_base: 到第二步就结束了,获取到openid,其他操作在这个基础上(比如记录该用户访问时间次数信息)

snsapi_userinfo: 获取openid和用户资料(昵称、头像、国、省、城市、性别、权限)

第一步:

@RequestMapping("loginInit.do")
public String loginInit(HttpServletRequest request,HttpServletResponse response)  {
	    //回调地址,要跟下面的地址能调通(getWechatGZAccessToken.do)
	    String backUrl="http://3261045722cwy.vicp.io/wx/getWechatGZAccessToken.do";
	    /**
		*这儿一定要注意!!首尾不能有多的空格(因为直接复制往往会多出空格),其次就是参数的顺序不能变动
	    **/
	    //AuthUtil.APPID微信公众号的appId
	    String url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + AuthUtil.APPID+
				"&redirect_uri=" + URLEncoder.encode(backUrl,"UTF-8")+
				"&response_type=code" +
				"&scope=snsapi_userinfo" +
				"&state=STATE#wechat_redirect";
	    return "redirect:"+url;
}

下面就可以实现了,对于微信公众号一般做免登陆,可以将用户跟openid,进行绑定,查询是否已经绑定,从而不用进行用户登陆

@RequestMapping("getWechatGZAccessToken.do")
public String getWechatGZAccessToken(HttpServletRequest request,HttpServletResponse response) throws Exception{
		//微信公众号的APPID和APPSECRET
		String code=request.getParameter("code");
        String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AuthUtil.APPID+
                "&secret=" +AuthUtil.APPSECRET+
                "&code=" +code+
                "&grant_type=authorization_code";
        String result = HttpClientManager.getUrlData(url);
		Map<String,Object> data = JSONObject.fromObject(result);
        String openid=data.get("openid").toString();
        String token=data.get("access_token").toString();
        //获取信息
        String infoUrl="https://api.weixin.qq.com/sns/userinfo?access_token=" +token+
                "&openid=" +openid+
                "&lang=zh_CN";
        String infoResult = HttpClientManager.getUrlData(infoUrl);
        
	}

 HttpClientManager工具类

package com.baosteel.qcsh.wap.controllers.thirdpartylogin.wechat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class HttpClientManager {
	/**
	 * 执行url请求数据
	 * 
	 * @param urlStr
	 * @return
	 * @throws Exception
	 * @throws IOException
	 */
	public static String getUrlData(String urlStr) throws Exception {
		URL url = new URL(urlStr);
		URLConnection connection = url.openConnection();
		// 一旦发送成功,用以下方法就可以得到服务器的回应:
		String sCurrentLine = "";
		StringBuffer sTotalString = new StringBuffer();
		InputStream l_urlStream = connection.getInputStream();
		// 传说中的三层包装阿!
		BufferedReader l_reader = new BufferedReader(new InputStreamReader(
				l_urlStream, "UTF-8"));
		while ((sCurrentLine = l_reader.readLine()) != null) {
			sTotalString.append(sCurrentLine);
		}
		return sTotalString.toString();
	}

	/**
	 * 执行url请求数据
	 * 
	 * @param urlStr
	 * @return
	 * @throws Exception
	 * @throws IOException
	 */
	public static String postUrlData(String urlStr, String data)
			throws Exception {
		URL url = new URL(urlStr);
		HttpURLConnection http = (HttpURLConnection) url.openConnection();
		http.setRequestMethod("POST");
		http.setRequestProperty("Content-Type",
				"application/x-www-form-urlencoded");
		http.setDoOutput(true);
		http.setDoInput(true);
		System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒28
		System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒29
																			// 30
		OutputStream os = http.getOutputStream();
		os.write(data.getBytes("UTF-8"));// 传入参数
		os.flush();
		os.close();
		// 一旦发送成功,用以下方法就可以得到服务器的回应:
		String sCurrentLine = "";
		String sTotalString = "";
		InputStream l_urlStream = http.getInputStream();
		// 传说中的三层包装阿!
		BufferedReader l_reader = new BufferedReader(new InputStreamReader(
				l_urlStream, "UTF-8"));
		while ((sCurrentLine = l_reader.readLine()) != null) {
			sTotalString += sCurrentLine;
		}
		return sTotalString;
	}
}