精华内容
下载资源
问答
  • 微信公众平台测试号
    2021-12-07 08:36:39
    更多相关内容
  • 一、注册微信公众平台测试账号。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 二、扫码关注获取测试号信息appId和appsecret 三、修改接口配置信息,url为签名认证方法的路径,token随意设置...

    一、注册微信公众平台测试账号。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
    在这里插入图片描述
    二、扫码关注获取测试号信息appId和appsecret
    在这里插入图片描述
    在这里插入图片描述
    三、修改接口配置信息,url为签名认证方法的路径,token随意设置,但是要保持和签名认证方法中的如下位置保持一致。
    在这里插入图片描述
    在这里插入图片描述
    四、修改JS接口安全域名,将域名修改成正在使用的域名。
    在这里插入图片描述
    五、修改网页服务中网页账号的授权回调页面的域名。
    在这里插入图片描述

    展开全文
  • 使用HBuilder X与微信开发者工具实现授权登陆功能,测试号申请

    测试账号申请

    测号响应流程:客户端发送请求,微信服务器收到请求后,转发到开发者服务器上,处理完后在发送给微信服务器,在返回给客户端

    1、打开微信公众平台,点击测试帐号申请。地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,

    通过微信扫一扫授权就能进入到测试号管理页面。可以看到自己的开发者ID

    测试号中的url需要自己有服务器编写对应接口,点击提交微信会像url发送数据根据返回结果判断url是否配置成功;token为自己定义的字符串

    最后在扫码添加自己微信为开发者

    下载中转工具NATAPP-内网穿透 基于ngrok的国内高速内网映射工具

    下载后在网页注册,进行实名认证,申请免费隧道,会生成隧道信息,启动natapp,

    输入 natapp -authtoken 隧道信息生成的authtoken 回车

    这时就会生成自己的域名,在测试时需要一直开启natapp

    若是有企业公众号那么就不用以上步骤,直接配置开发者WX即可

    创建小程序测试:使用微信开发者工具通过扫码登陆,点击创建选择小程序即可,AppID为刚才申请的。选择需要编写的模板即可

    使用HBuilder X与微信开发者工具实现授权登陆功能

    首先需要在HBuilder上导入项目模板,在设置安全中配置微信开发者工具的目录,然后点击运行到小程序模拟器,这样运行之后就会自动打开微信开发者工具

    创建登陆页面主要代码login.vue,主要是调用微信提供的api获取用户的code,这在前端同时还获取了用户的基本信息发送给后端

    <button class="confirm-btn" @click="wxlogin" :disabled="logining">登录</button>
    //对应逻辑
    methods: {
    			wxlogin(){
    			uni.getUserProfile({
    					desc:"获取资料",
    					success: (res) => {
    						console.log(res)
    						this.encryptedData=res.encryptedData
    						this.rawData=res.rawData
    						this.iv=res.iv
    						this.signature=res.signature
    						this.avatarUrl=res.userInfo.avatarUrl
    						this.name=res.userInfo.nickName
    					}
    				});//获取用户资料
    				uni.login({
    				  provider: 'weixin',
    				  success: (res) => {
    					
    					 this.code=res.code;
    					// console.log(this.code);
    					
    				  }
    				});
    				console.log(this.name)
    				console.log(this.avatarUrl)
    				//发送请求
    				uni.request({
    					url:"http://localhost:8081/api/dsxs/company/token",
    					method:"POST",
    				 data: {
    					// encryptedData:this.encryptedData,
    					// rawData:this.rawData,
    					// iv:this.iv,
    					// signature:this.signature,
    					code:this.code,
    					img:this.avatarUrl,
    					name:this.name
    				    },
    					success: (e) => {
    						
    						console.log("向后端请求成功");
    					}
    					
    				})
    			},

    后端可以通过之前申请的appID、appSecret和前端传来的code获取到用户的openID与session_key

    创建springboot项目,添加依赖

     <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>4.7.2</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--mybatis-plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.3.1</version>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--lombok用来简化实体类-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.3.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>2.0</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.62</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.9.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.6</version>
            </dependency>

    配置好实体类与数据相关代码后,将自己的appID、appSecret放在配置文件中

    wx.open.app_id=xxxxxxxx
    wx.open.app_secret=xxxxxxxxx

    创建获取配置信息类

    @Component
    //@PropertySource("classpath:application.properties")
    public class ConstantPropertiesUtil implements InitializingBean {
        //读取配置文件并赋值
        @Value("${wx.open.app_id}")
        private String appId;
        @Value("${wx.open.app_secret}")
        private String appSecret;
    
        public static String WX_OPEN_APP_ID;
        public static String WX_OPEN_APP_SECRET;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            WX_OPEN_APP_ID = appId;
            WX_OPEN_APP_SECRET = appSecret;
        }
    }

    编写用户登录控制层,这里我的实现逻辑是根据前端传来的code,获取用户openID作为用户的唯一标识。首先在数据库中查询有无当前用户,要有创建token返回给前端对应信息。因为前端写的是一次性将code与用户信息全传过来,用户点击登陆后会跳转到授权页面,用户若点击拒绝那么用户信息将不会传过来,只有code,这时我的处理逻辑是判断有无用户信息,若没有不存如数据库,这里由于用户点击授权会有时间响应所以做了一个短暂的休眠处理。

    public class LoginController {
        @Autowired
        private UserService userService;
    
        @PostMapping("token")
        public R login(@RequestBody LoginBO loginBO) throws IOException, InterruptedException {
        //拼接对应信息
            StringBuffer baseAccessTokenUrl = new StringBuffer()
                    .append("https://api.weixin.qq.com/sns/jscode2session")
                    .append("?appid=%s")
                    .append("&secret=%s")
                    .append("&js_code=%s")
                    .append("&grant_type=authorization_code");
            String accessTokenUrl = String.format(baseAccessTokenUrl.toString(),
                    ConstantPropertiesUtil.WX_OPEN_APP_ID,
                    ConstantPropertiesUtil.WX_OPEN_APP_SECRET,
                    loginBO.getCode());
             //像网站发送请求
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder().url(accessTokenUrl).build();
            Response response = client.newCall(request).execute();
            //请求成功会返回对应信息,解析为json
            if (response.isSuccessful()){
                String body = response.body().string();
                JSONObject jsonObject = JSONObject.parseObject(body);
                String session_key = jsonObject.getString("session_key");
                String openid = jsonObject.getString("openid");
                HashMap<String, Object> map = new HashMap<>();
                Thread.sleep(1000);
                //判断数据中有无当前用户
                User userInfo = userService.getByOpenId(openid);
                if (userInfo==null){
                    User user = new User();
                    user.setOpenid(openid);
    
                    if (loginBO.getName().equals("")){
                        return R.error().message("授权失败");
                    }
                    user.setNickName(loginBO.getName());
                    user.setAvatarUrl(loginBO.getImg());
                    user.setStat(1);
                    userService.save(user);
                    userInfo = userService.getByOpenId(openid);
                }
                    String token = JwtHelper.createToken(userInfo.getOpenid(),userInfo.getNickName(),userInfo.getAvatarUrl());
                    map.put("token",token);
                    map.put("nickname",userInfo.getNickName());
                    map.put("img",userInfo.getAvatarUrl());
                    return R.ok().data(map);
            }
            return R.error().message("授权失败,请重试");
        }

    创建JWT生成token工具类

    public class JwtHelper {
        //过期时间  毫秒
        private static long tokenExpiration = 60*60*1000;
        //自定义秘钥
        private static String tokenSignKey = "123456";
        public static String createToken(String openid,String nickName,String img) {
            String token = Jwts.builder()
                    //设置分组
                    .setSubject("DSXS-USER")
                    //设置字符串过期时间
                    .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
                    //私有部分
                    .claim("userId", openid)
                    .claim("userName", nickName)
                    .claim("img",img)
                    //设置秘钥
                    .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                    .compressWith(CompressionCodecs.GZIP)
                    .compact();
            return token;
        }
        //从生成token字符串获取userId值
        public static String getUserId(String token) {
            if(StringUtils.isEmpty(token)) return null;
            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
            Claims claims = claimsJws.getBody();
            String userId = (String)claims.get("userId");
            return (String)claims.get("userId");
        }
        public static String getUserName(String token) {
            if(StringUtils.isEmpty(token)) return "";
            Jws<Claims> claimsJws
                    = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
            Claims claims = claimsJws.getBody();
            return (String)claims.get("userName");
        }
        public static String getImg(String token) {
            if(StringUtils.isEmpty(token)) return "";
            Jws<Claims> claimsJws
                    = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
            Claims claims = claimsJws.getBody();
            return (String)claims.get("img");
        }

    创建根据token获取用户信息方法

    //根据token获取用户信息
        @GetMapping("auth/getUserInfo")
        public R getUserInfo(HttpServletRequest request) {
            try{
                String userId = AuthContextHolder.getUserId(request);
                String userName = AuthContextHolder.getUserName(request);
                String userImg = AuthContextHolder.getUserImg(request);
                User user = new User();
                user.setOpenid(userId);
                user.setNickName(userName);
                user.setAvatarUrl(userImg);
                return R.ok().data("userInfo",user);
            }catch (ExpiredJwtException e){
                System.out.println("token失效");
            }
            return R.error().message("token失效");
        }

    若有其他实现方式欢迎讨论

    展开全文
  • 微信测试号接口配置

    2020-12-22 14:25:56
    1、用你自己的微信公众号或者使用微信测试号,这里我用的是微信测试号,进去后扫描登录即可,测试号拥有正常公众号的大部分功能以及接口权限 微信测试号链接:...
  • 公众号要具备开发能力的话,需要在微信公众号平台注册,申请,审核,每年会产生一定的费用,开发阶段,我们可以使用微信公众号的接口测试账号,直接体验和测试公众平台所有高级接口 1、接口测试号 ...

    公众号要具备开发能力的话,需要在微信公众号平台注册,申请,审核,每年会产生一定的费用,开发阶段,我们可以使用微信公众号的接口测试账号,直接体验和测试公众平台所有高级接口

    1、接口测试号

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

    使用我们自己的微信扫码登录即可

    2、登录接口测试号

    在这里插入图片描述
    登录上来之后,我们就能看到我们测试号的 appid,appsecret 等信息,接口配置信息等

    3、关注接口测试号

    在这里插入图片描述
    向下滑动,可以看到一个二维码,这就是我们接口测试号的二维码了,扫描关注,方便我们后期调试

    4、体验接口权限表

    在这里插入图片描述
    表中列出了我们接口测试号所具备的所有能力,即我们可以在接口测试号上做哪些事情,有的接口需要我们自己去开通和设置调用上线,也可以关闭我们不需要的接口

    如您在阅读中发现不足,欢迎留言!!!

    展开全文
  • 1、打开微信公众平台测试帐号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2、通过微信扫一扫授权就能进入到测试号管理页面。 3、测试账号拥有几乎所有的公众号接口,而个人只能申请...
  • 1、浏览器打开微信公众平台测试帐号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login, 通过微信扫一扫授权就能进入到测试号管理页面。 上面图中 有个接口配置信息 需要你自己有服务器...
  • 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证,请阅读 消息接口使用指南。 URL http://sjjwx.nat300.top/wxSignatureCheck Token wxtoken 重点来了!!! 微信...
  • 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证,请阅读消息接口使用指南。 URL http://sjjwx.nat300.top/wxSignatureCheck Token wxtoken 重点来了!!! ...
  • 微信公众平台测试号

    2016-03-23 15:36:00
    微信公众平台认证之前,我们可以先申请一个测试的公众号来进行测试,这对开发人员来说还是有很大好处的! 微信公众平台提供了测试账号,在公众账号没有审核之前,也是可以进行开发的。进入后台-&gt;...
  • 微信公众平台测试账号本地配置

    千次阅读 2019-11-28 14:09:14
    因为是本地进行测试,肯定没有需要ICP备案的域名了,这里我采用的做法是在花生壳申请一个免费的域名,下载网址:https://hsk.oray.com/download/,这里以linux服务器为例来讲解 (1)打开网址 (2)点击“下载”,...
  • 这段时间,在写微信公众平台开发。奈何手头只有一个订阅,订阅权限较低,接口较少。用起来颇为棘手。    微信提供了一个测试账号,可以注册申请一个微信公众测试账号,权限较高,接口较多。还是挺好用的,只...
  • 我们在开发微信公众账号的时候,微信是提供测试平台给第三方客户使用。 1、申请地址是:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,用户需要通过微信扫一扫授权就能进入到测试号管理页面。 2...
  • 测试号申请 我们一般使用测试号进行开发,测试号的申请需要在官网进行测试 选择开发者工具 选择开发者文档 选择接口测试号申请 这样,我们就打开了测试号申请的页面 在这里,我们只需填写url和token然后点击提交就...
  • 微信公众平台
  • 想要学习微信开发功能,又苦于没有认证公众号的伙伴们,可以通过注册一个微信公众号,然后申请一个接口测试账号的方式,来学习微信接口开发。【为了可以使用全部的常用接口,需要有一个域名和服务器空间】 下面简单...
  • 开发微信公众号的时候,我们经常会使用微信公众平台测试号来进行调试,因为测试号的可用接口比较全,不然只有经过认证的服务号才可以调用比较高级的接口。 从开始搞一个微信公众平台测试号开始。 打开微信公众平台...
  • 要想做公众号开发,但是个人账号是没有公众平台的全部接口权限的,所以需要申请测试账号。URL填写需要一个域名,所以选择用内网穿透,我这里使用的就是ngrok,直接去官网下就可以了。我这里主要遇到的问题就是,配置...
  • 在开发中,涉及到微信公众号开发的童鞋们,没有微信测试公众号肿么办? 百度搜索 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 微信扫码登录,关注公众号平台即可. 接下来,自由的进行...
  • 提供微信开放平台微信公众公众平台、QQ互联企业账号测试,需要加微信,带1对1接入
  • https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
  • 后台会发个请求到URL,所以只要能正确返回就可以 echo $_GET['echostr']; ?>
  • 微信公众平台测试号验证Token失败的坑

    万次阅读 热门讨论 2018-04-08 03:32:26
    围绕signature,timestamp,nonce,echostr取值都为null的问题...不过微信提供了测试号供开发者使用。 根据大神 https://blog.csdn.net/chmod_R_755/article/details/75554735 的文章,他最后的checkSignature方法和...
  • <?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); if (!isset($_GET['echostr'])) { ... }这是一个php的微信公众平台开发接口类,需要的朋友可以下载使用
  • 2.进入之后,会看到测试号的一些基本信息,用你的微信号扫描二维码关注测试号 3.向下拉,我们可以看到各种权限都可以使用. 网页账号权限处,右侧点击修改,此处填入你的网页域名 5.确认之后,后台配置就完成了,...
  • 在做微信测试的时候,遇到测试失败的问题,如下图: token值没有问题,wx_sample.php部分代码 在这种情况下出现配置失败。 解决办法:在代码中修改一个地方,即保证代码:$wechatObj->valid();有...
  • 主要为大家详细介绍了Java微信公众平台开发第七步,微信公众平台测试帐号的申请,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 我用个人的微信扫描微信开发平台测试号,使用ngrok映射本机tomcat项目到外网,页面回调也填写的域名,依然提示scope没有权限或者参数错误,二维码不显示,本地tomcat服务器能接收到发来的参数,望大牛解答
  • 备注:测试基于微信公众平台测试号编写,真实开发环境基本适用 微信测试号的调用频率限制如下所示(根据真实测试情况只少不多) 接口 每日限额 获取access_token 200 自定义菜单创建 100 自定义...
  • 先去微信公众平台申请一个测试号,非常简单的 微信公众平台测试号 进去之后,会生成一个appid 和appsecret 这两个后面要用到 第二步,接口配置信息这块,因为我没有备案的域名,我用的是小米球 非常神奇的东西,注册账号...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,575
精华内容 15,430
关键字:

微信公众平台测试号

友情链接: matlab.rar