微信开发者之AppID和AppSecret举例子

news2024/11/25 9:31:18

-- 请不要为爱你的人流泪,因为爱你的人不会让你流泪!

今天对这2东西做个相对全面的介绍,不一定深入,但是对实际开发还是很有必要的


 我们在微信开发中总是会绕不开2个单词: 

AppID:开发者ID,有些叫AppKey

AppSecret:开发者密码

 

目的:二者配合使用,可调用公众号的接口能力;这是官方的说法,那我再说的直白点,就是当你的开发过程中有使用人家微信相关功能时候,必须有在人家官方认证过的账号密码。

why:

简单说几点,首先可以统计登记都谁使用了咱们自家的工具包(sdk/api/应用接口);其次适当时候还是可以收点保护费的,毕竟开发也是给花钱的嘛,小挣点也没啥不好。

who:

大部分第三方都要这个接口秘钥,比如:腾讯,你使用了人家的QQ、腾讯微博、空间、微信、朋友圈等。新浪,你使用了人家的新浪微博。阿里巴巴,你是用了人家的支付宝。百度/高德,你是使用了人家的定位地图功能。

do:

你使用人家帮你干了什么活呢?腾讯的一般都是分享,此时我们想定制分享的一些列配置,比如:分享的标题,摘要,小图片以及分享后打开的页面链接地址(如下图:)。这些肯定要涉及和微信官方进行沟通了,也就是拿到人家给你的许可证(秘钥),当然还有微信支付,不过支付一般注册的微信公众号不支持这个功能,也就是没有这个使用权限,花钱去买。新浪微博常用的也是用来做分享时候的配置。支付宝,不用多说肯定是想使用人家做支付。

如何取得: appid appsecret  首先先补充一点 :

微信开放平台和公众平台的区别是什么?

1、服务对象不同
微信开放平台主要面对移动应用/网站应用开发者,为其提供微信登录、分享、支付等相关权限和服务。
微信公众平台用于管理、开放微信公众号(包括订阅号、服务号、企业号),简单的说就是微信公众号的后台运营、管理系统。
2、功能不同
微信开放平台提供了数据统计功能,用于开发者统计接入应用的登录、分享等数据情况。
微信公众平台的基础运营功能:群发功能、自动回复、自定义菜单、投票管理。
3、账号区别
微信公众平台账号细分为服务号,订阅号,企业号。
微信开放平台仅第三方移动程序提供接口,使用户可将第三方程序的内容发布给好友或分享至朋友圈。
扩展资料:
商户平台
无论是申请公众平台商户,还是开放平台商户,申请成功后,都会拥有商户平台账号,可登陆商户平台进行操作。
商户平台主要就是做微信支付用的,如果APP或者公众号需要接入支付功能,那么就需要在公众平台申请公众平台商户,或者在开放平台申请开放平台商户,申请成功后会分配商户平台账号。

 

 

2个平台的AppID和AppSecret 都不一样 

 


我们例子(移动登录)今天就获取 开放平台的AppID和AppSecret

例子JAVA实现微信授权登录(详解)

第一步:(前期设置)登录微信公众号接口测试平台设置信息

链接:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

登录成功后可以看到测试用的appidappsecret,稍后再后台我们要用到这两个ID,如下图

 紧接着需要设置网页授权(体验接口权限表 —》 网页服务 —》网页帐号 —》 网页授权获取用户基本信息)

 

 

没有域名的话可以用内网穿透动态解析一个域名。

NATAPP链接:点击注册
注册登录成功后可以看到下图,选择免费隧道

 购买免费的隧道之后,可以直接按照官方的一分钟教程完成内网穿透,这样我们就拿到了我们的域名

这里展开说 使用:

在natapp官网上购买免费得隧道。

  网址:NATAPP-内网穿透 基于ngrok的国内高速内网映射工具  

  在该网址上面,正常完成注册登陆,点击购买隧道

 可选择免费或者付费得隧道,差异可在下面列表查看 这个要实名认证 要用你实名认证后的支付宝进行  认证后免费获取

 

点击我得隧道,配置,进入配置页面

 

填写本地得ip和本地服务端口,点击修改。 这里可以改动自己的默认地址到自己的内网地址

 

根据自己电脑机型,下载对应natapp客户端到本地

 

下载完成后,本地打开natapp.exe文件

 

在打开得黑窗口中执行以下命令: natapp -authtoken=xxxxxx      

authtoken在我得隧道中如下位置可查看到

 

执行之后,可以在黑窗口中看到如下,将以下红色圈中部分改写成项目得请求头即可在互联网中访问。

如:本地访问:  http:localhost:8080/equipment/index/index    

互联网访问:http://td87wf.natappfree.cc/equipment/index/index

 

上面的配置中需要用到内网地址  这里补充一下“

IPv4私有地址”

相信大家对IPv4地址并不陌生,它存在于我们网络中的任何一个地方。因为一台设备必须获取一个合法的IP地址后,才可以与其他网络中的设备进行通信。那么大家是否知道,在家里或者公司中使用的IPv4地址是什么类型的么?


实际上,我们在公司内和家里使用的IPv4地址类型为私有地址,私有地址是不可以直接在internet网络中使用的,它会被internet认为是非法地址(即非公有地址)。只有公有地址才可以在互联网(internet)中使用。


目前公有地址的管理和分发是在IANA(Internet Assigned Numbers Authority) http://www.iana.org/ 互联网号码分配局。
那么我们在日常工作、生活中可以使用到的IPv4 私有地址有那些呢?
首先IPv4地址分为A类地址、B类地址和C类地址,在每一类的地址池中,都有一部分预留给了私有地址。也就是说私有地址可以有多种选择,根据你的组织规模大小可以使用不同类的地址。下面就介绍一下A、B、C类地址池中到底有那些可以为我们内网使用。

A类地址中IPv4的私网地址可用范围是:10.0.0.0 to 10.255.255.255
B类地址中IPv4的私网地址可用范围是:172.16.0.0 to 172.31.255.255
C类地址中IPv4的私网地址可用范围是:192.168.0.0 to 192.168.255.255


以上就是我们可以在内网中使用的IPv4地址。记住这些地址是私网地址,仅可以在内部网络中使用,不可使用在公网中。

大家可以依据自己组织的规模大小,酌情使用那类私有地址。例如,家庭网络通常设备数量比较小,所以一般使用C类的私有地址皆可,如大家经常在家庭网络中看到的192.168.1.0/24的网络地址,这个C类的私有地址网段可以承载254个主机,足足够家庭网络使用了。

如果中大型企业可以在IP地址规划时,考虑使用A类或者B类的私网地址,这样可以等到更多的主机地址。为各种类型需要接入网络的设备提供IPv4 地址。

另外切记,私有IPv4 地址是不可以直接与公网IPv4地址进行直接通信的,他们之间的通信需要使用到地址转换技术(NAT --Network Address Translation)。

说到这里相信大家已经对IPv4 私有地址的概念有所了解, 快去看看你的主机的IPv4私有地址是多少吧?看看是哪一类的私有地址。

:主机IP地址查看方法,(Windows系统下)
开始–运行–CMD (win徽标键+R)–点击ok

在这里插入图片描述

键入ipconfig
在这里插入图片描述 

 

 第二步:代码实现微信授权。

简单来说,微信授权分为四步

  1. 授权登录接口。
  2. 用户点击授权。
  3. 微信授权回调接口。
  4. 在回调接口中获取openid、access_token、获取用户信息。

第一步:先上工具类AuthUtil

public class AuthUtil {
	public static JSONObject doGetJson(String url) throws ClientProtocolException, IOException {
		JSONObject jsonObject = null;
		DefaultHttpClient client = new DefaultHttpClient();
		HttpGet httpGet = new HttpGet(url);
		HttpResponse response = client.execute(httpGet);
		HttpEntity entity = response.getEntity();
		if (entity != null) {
			String result = EntityUtils.toString(entity, "UTF-8");
			jsonObject = JSONObject.fromObject(result);
		}
		httpGet.releaseConnection();
		return jsonObject;
	}
}

 

第二步:WxAuthorizeController的微信授权接口

   /**
    * Tea微信登录接口
    * @throws IOException 
    */
   @ApiOperation(value = "微信登录接口")
   @IgnoreAuth
   @RequestMapping("wx_login")
   public void wxLogin(HttpServletResponse response) throws IOException{
   	//域名(暂时写死的)
   	String sym = "http://c8d3v2.natappfree.cc";
       //这里是回调的url
       String redirect_uri = URLEncoder.encode(sym+"/front/auth/callBack", "UTF-8");
       String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" +
               "appid=APPID" +
               "&redirect_uri=REDIRECT_URI"+
               "&response_type=code" +
               "&scope=SCOPE" +
               "&state=123#wechat_redirect";
       response.sendRedirect(url.replace("APPID",WxConstant.APPID).replace("REDIRECT_URI",redirect_uri).replace("SCOPE","snsapi_userinfo"));
   }

参数说明如下:

 

第三步:WxAuthorizeController微信授权登录回调接口

	/**
	 * Tea微信授权成功的回调函数
	 * 
	 * @param request
	 * @param response
	 * @throws ClientProtocolException
	 * @throws IOException
	 * @throws ServletException
	 */
    @ApiOperation(value = "微信授权回调接口")
    @IgnoreAuth
	@RequestMapping("/callBack")
	protected void deGet(HttpServletRequest request, HttpServletResponse response)throws Exception {
    	//获取回调地址中的code
		String code = request.getParameter("code");
		//拼接url
		String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + WxConstant.APPID + "&secret="
				+ WxConstant.APPSECRET + "&code=" + code + "&grant_type=authorization_code";
		JSONObject jsonObject = AuthUtil.doGetJson(url);
		//1.获取微信用户的openid
		String openid = jsonObject.getString("openid");
		//2.获取获取access_token
		String access_token = jsonObject.getString("access_token");
		String infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid
				+ "&lang=zh_CN";
		//3.获取微信用户信息
		JSONObject userInfo = AuthUtil.doGetJson(infoUrl);
		//至此拿到了微信用户的所有信息,剩下的就是业务逻辑处理部分了
		//保存openid和access_token到session
		request.getSession().setAttribute("openid", openid);
		request.getSession().setAttribute("access_token", access_token);
		//去数据库查询此微信是否绑定过手机
		UserVo user = userService.queryByOpenId(openid);
		String mobile=user==null?"":user.getMobile();
		
		if(null == mobile || "".equals(mobile)){
			//如果无手机信息,则跳转手机绑定页面
			response.sendRedirect("/front/register.html");
		}else{
			//否则直接跳转首页
			response.sendRedirect("/front/index.html");
		}
	}

 

错误码10003: redirect_uri域名与后台配置不一致错误的问题补充:

错误码 必须关注此测试号 10006 的问题补充

 

三个人 (王萌 马晓静 荣丹)~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯题单day2【题目】

动态规划 调手表https://www.lanqiao.cn/problems/230/learning/?page1&first_category_id1&sortstudents_count&second_category_id3&tags%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92,%E5%9B%BD%E8%B5%9B 最优包含https://www.lanqiao.cn/problems/239/learning…

114.【Vue-细刷-05】

Vue-04 (二十八)、Vuex1.Vuex的简介(1).vuex是什么(2).什么时候使用Vuex(3).Vuex工作原理图 2.求和案列_纯Vue版本3.求和案列_Vuex(1).初始化状态(2).操作状态 4.求和案列_Vuex的getters(1).Vuex的getters类似于 Vue的computed 5.求和案列_Vuex中的mapSteat和mapGetters(1).靠自…

PY32F072 系列单片机,LQFP64, LQFP48, QFN32, LQFP32多种封装

PY32F072 系列微控制器采用高性能的 32 位 ARM Cortex-M0内核,宽电压工作范围的 MCU。嵌入高达 128Kbytes flash 和 16Kbytes SRAM 存储器,最高工作频率 72MHz。包含多种不同封装类型多款产品,LQFP64, LQFP48, QFN32, LQFP32。 PY32F072芯片…

C# 实现 Websocket通讯聊天 (管用、超好使,点个赞)

1、背景 WebSocket出现之前,Web端为了实现即时通讯,所用的技术都是Ajax轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器…

基于RV1126平台分类模型全流程部署(附工程)

基于RV1126平台分类模型全流程部署 环境安装模型训练ONNX模型转换RKNN模型转换可执行文件上板推理 环境安装 首先要在虚拟机上安装瑞芯微Rv1126的SDK,重要的是要具有rknn_toolchain 一般在以下路径: sdk/external/rknn-toolkit 按照doc里面的步骤安装即…

多模态:MiniGPT-4

多模态:MiniGPT-4 IntroductionMethodlimitation参考 Introduction GPT-4具有很好的多模态能力,但是不开源。大模型最近发展的也十分迅速,大模型的涌现能力可以很好的迁移到各类任务,于是作者猜想这种能力可不可以应用到多模态模…

物联网常见协议之 Amqp 协议及使用场景解析

引言 本文围绕 AMQP 协议,为大家详细解析 AMQP 协议、核心技术亮点、多协议之间的对比以及使用实践,并介绍华为云 IoT 通过 Amqp 协议如何为开发者和企业提供了更加灵活和高效的通信方式,使得物联网应用得以在各个领域得到更广泛的推广和应用…

项目文档(request页面代码逻辑)

项目文档 1. 封装请求基地址 2. 添加请求拦截器并设置请求头 作用 在向服务器发送请求时,很多请求都需要在请求头中携带token,每一次去请求都写请求头很麻烦,所以我们写一个请求拦截器,统一拦截并添加一个请求头 代码部分 // 请求拦截器 req…

[架构之路-194]-《软考-系统分析师》- 软件复用技术之软件产品线

目录 1. 思想来源:产品线 1.1 硬件产品线 1.2. 产品组合 2. 软件产品线 2.1 思想来源: 2.2 为什么使用软件产品线? 2.3 软件产品线是一种软件架构 2.4 软件产品线详解 2.5 软件产品线的双生命周期的模型 2.6 软件产品线建立方式 …

Kali E:Unable to locate package错误解决

默认的新装的kali 可能都会遇到这个安装报错E: Unable to locate package httrack问题,今天我记录下彻底解决过程和效果。 Command httrack not found, but can be installed with: apt install httrack Do you want to install it? (N/y)y apt install httrack Re…

介绍动作识别数据集:“NTU RGB+D”数据集和“NTU RGB+D 120”数据集

动作识别数据集:“NTU RGBD”数据集和“NTU RGBD 120”数据集 (还包括AUTH UAV手势数据集:NTU 4级) 本页介绍两个数据集:“NTU RGBD”和“NTU RGBD 120”。 “NTU RGBD”包含60个动作类和56,880个视频样本…

傅里叶分析的历史背景

目录 1. Fourier级数(三角级数)的历史背景 2. 圆和复平面 3. Fourier的大胆猜想 1. Fourier级数(三角级数)的历史背景 自古以来,圆形一直是(现在仍然是)最简单的抽象理解形状。您只需要一个中心点和一个半径就可以了。圆上的所有点与圆心的距离都是固定…

无监督域适应 (UDA)(1)

一、定义 1、无监督域自适应 Unsupervised domain adaptation 经典机器学习假设训练集和测试集来自相同的分布。 然而,这个假设在现实世界的应用程序中可能并不总是成立,例如,数据来源不同。 这种情况下,域分布之间会存在差异…

进阶自定义类型——结构体,枚举,联合

本章重点: 1.结构体 1.1 结构体类型的声明 1.2 结构的自引用 1.3 结构体变量的定义和初始化 1.4 结构体内存对齐 1.5 结构体传参 1.6 结构体实现位段(位段的填充&可移植性) 2.枚举 2.1 枚举类型的定义 2.2 枚举的优点 2.3 枚举的使用 3.联合 3.1 联合类…

年月日计算器——操作符重载的应用(含完整代码,简洁)

前言&#xff1a;大家好&#xff0c;这里是YY&#xff1b;此篇博客主要是操作符重载的应用&#xff1b;包含【流插入&#xff0c;流提取】【>,<,>,<,】【&#xff0c;-&#xff0c;&#xff0c;-】【前置&#xff0c;后置&#xff0c;前置--&#xff0c;后置--】 P…

Goby 漏洞更新 | Weblogic Commons Collections 序列化代码执行漏洞(CVE-2015-4852)

漏洞名称&#xff1a;Weblogic Commons Collections 序列化代码执行漏洞&#xff08;CVE-2015-4852&#xff09; English Name&#xff1a;Weblogic Commons Collections serialization code execution vulnerability (CVE-2015-4852) CVSS core: 7.5 影响资产数&#xff1a…

Docker ELK 监控日志(附yml)

目录 一 安装docker-commpose 二 编写yml文件 2.1 docker配置文件 2.2 filebeat配置文件 2.3 kibana配置文件 三 运行启动 四 打开kibana 一 安装docker-commpose 可以看我之前的docker文章 二 编写yml文件 2.1 docker配置文件 使用的7.17.9版本 &#xff0c;请保…

linux 下 ps、sort、top 命令详解

1、 ps命令 作用&#xff1a;查看系统进程&#xff0c;比如正在运行的进程有哪些&#xff0c;什么时候开始运行的&#xff0c;哪个用户运行的&#xff0c;占用了多少资源。 参数&#xff1a; -e 显示所有进程 -f 显示所有字段&#xff08;UID&#xff0c;PPIP&#xff0c;C…

Redis学习——单机版安装

目录 1.解压 2.安装gcc 3.执行make命令 4.复制redis的配置文件到默认安装目录下 5.修改redis.conf文件 6.启动redis服务与客户端 7.查看redis进行是否启动 8.关闭redis服务 9.redis性能测试 注意&#xff1a;安装redis前要安装jdk。 1.解压 [rootlxm148 install]# t…

ubuntu卷积神经网络——图片数据集的制作以及制作好的数据集的使用

首先我事先准备好五分类的图片放在对应的文件夹&#xff0c;图片资源在我的gitee文件夹中链接如下&#xff1a;文件管理: 用于存各种数据https://gitee.com/xiaoxiaotai/file-management.git 里面有imgs目录和npy目录&#xff0c;imgs就是存放5分类的图片的目录&#xff0c;里面…