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

article/2025/9/12 6:06:34

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

今天对这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";//这里是回调的urlString 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 {//获取回调地址中的codeString code = request.getParameter("code");//拼接urlString 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.获取微信用户的openidString openid = jsonObject.getString("openid");//2.获取获取access_tokenString 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到sessionrequest.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://chatgpt.dhexx.cn/article/n0c5SfxW.shtml

相关文章

安全课堂|关于小程序AppSecret密钥泄露漏洞官方

原文链接:https://developers.weixin.qq.com/community/minihome/doc/0004a84fcb0bb0e89eddbaa5156401 安全课堂|关于小程序AppSecret密钥泄露漏洞官方 微信团队04-27 为进一步提升小程序的安全性和用户体验,目前平台对提审的小程序均需进行安全检测&…

【微信小程序】项目上线所需AppID、AppSecret和原始ID获取的逐步方法

一、简述 本文内容面向业务老师,通过详细的逐步方法,帮助对流程不熟悉的有微信小程序管理员权限的业务老师,通过微信公众平台,获得项目上线所需的AppID、AppSecret、原始ID,不熟悉流程的开发人员也可以阅读。 二、进…

微信小程序AppID、AppSecret如何获取

进入微信公众平台 https://mp.weixin.qq.com/ 获取AppID(小程序ID) 微信公众平台 - 开发 - 开发管理 - 开发设置 获取AppSecret 管理员用户,同AppID页面,点击“生成”,生成小程序秘钥 注意:尽量只生成一次&…

值得收藏!这 100 个 Python 实战小项目真棒!

学习 Python 会有这么一个阶段,太简单的程序看不上眼,复杂的开源项目又有点力不从心,这个时候,你就需要接触点简单的 Python 小项目来提升 Python 技能。 最近逛GitHub, 碰巧碰上有这样一个项目,收集了 100 个实用的 …

2022最新python100个实战练手项目,【附源码】,快来学习起来吧!

Python是目前最好的编程语言之一。由于其可读性和对初学者的友好性,已被广泛使用。那么要想学会并掌握Python,可以实战的练习项目是必不可少的。 接下来,我将给大家介绍20个非常实用的Python项目,帮助大家更好的学习Python。大家…

python爬虫实战小项目

本文所讲的爬虫实战属于基础、入门级别,使用的是python2.7实现的。 爬虫原理和思想 本项目实现的基本目标:在捧腹网中,把搞笑的图片都爬下来,注意不需要爬取头像的图片,同时,将图片命好名放在当前的img文件…

django项目实战基于Python实现的电影推荐系统

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Python项目介绍 资料获取 Python项目介绍 计算机毕业设计python毕设项目之django电影推荐系统-IT实战课堂_哔哩哔哩_bilibili计算机毕业设计python毕设项目之django电影推荐系统-IT实战…

给缺少Python项目实战经验的人

我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用到实际…

Python项目实战 —— 淘宝用户行为分析

Python项目实战 Python项目实战 —— 0淘宝用户行为分析 一、背景 本数据集共有大约1200万条数据,数据为淘宝APP2014年11月18日至2014年12月18日的用户行为数据,字段分别是:user_id用户身份(已脱敏)、item_id商品ID(已脱敏)、behavior_type…

Python实战小项目

不是很稀饭《复联》嘛,看了《复联4》,就用50行Python代码做了这些: 视频展示:50行代码玩转《复仇者联盟》 教程地址:图片转字符画 相关教程地址:视频转字符动画 当然,这个仅仅是初学者的一个…

手把手教导实战Python Web项目

手把手教导实战Python Web项目 一、前言 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很…

Python web开发之flask项目实战总结

在线问答系统 Flask Web开发项目介绍功能描述一、前端设计二、数据库设计三、页面功能开发1.用户模块2.问答模块 四、总结 Flask Web开发 请求到响应 用户通过浏览器访问url,会发送请求到服务器,服务器接收请求后会根据url规则找到对应的视图函数进…

Python必学的4个实战项目,拿走不谢

最近遇到了一些比较经典的实战项目,比较适合零基础的小白以及基础较薄弱的小伙伴。想了想,我决定把它分享给大家。 Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的…

菜鸟进阶高手, 推荐 7 个 Python 上手实战项目

作为一个语法简洁、有着丰富的第三方库的编程语言,Python 上手极为简单,短时间内就可以让你编写出能够解决实际问题的小程序,甚至去面试初级 Python 工程师的职位。 不过,如果要写出一些更复杂的应用,或者想从事数据分…

比金典还经典——4个python项目实战

写在前面的一些P话: Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣。Python易于设置,并且是用相对直接的风格来编…

Python项目实战 4.1:账号登录

目录 一、用户名登录 二、多账号登录 三、首页用户名展示 四、退出登录 五、判断用户是否登录 一、用户名登录 1. 用户名登录逻辑分析 2. 用户名登录接口设计 1. 请求方式 选项方案请求方法POST请求地址/login/ 2. 请求参数:表单 参数名类型是否必传说明usern…

Python爬虫实战

文章目录 1. 引言2. 页面分析2.1 页面元素分析2.2 分页分析2.3 页面详情页面2.4 下载链接 3. 代码3.1 数据库结构3.2 步骤3.2.1 根据url获取页面结构3.2.2 解析页面数据3.2.3 数据存入数据库 4. 测试结果5. 完整代码 1. 引言 注:勿用于非法用途。 之前学习过Pytho…

insert into

7.insert into 如果我们想向表格中插入数据,就需要用到insert into语句了 7.1 insert into语法 INSERT INTO 表名 VALUES (值1, 值2,....) (注:插入一行数据) INSERT INTO 表名 (列名, 列名…

LaTeX: Missing } or { inserted. ^^I\For

报错 分析 可以发现,报错提示缺少{,但第306行并没有问题,并不缺少大括号。 这种情况下,很有可能是前面某个公式处出现了大括号缺失,建议从头到尾查找一遍。 修改 往前排查后发现某一处缺少大括号,如下所…

sqlserver触发器的使用以及inserted和deleted详解

背景:最近在项目中有需求是当人员表中有变动时(比如:增加人员、修改人员信息、删除人员信息)需要把这张表中的变动的信息同步到它对应的日志表中。那么如果用代码写逻辑的话在执行效率上会比较慢,正好sqlserver提供了触…