微信公众号开发遇到的一些坑

本文分享了微信开发中常见的两个问题:一是测试号与服务器运行差异,需检查APPID、IP白名单及认证状态;二是介绍如何在Spring项目中自动获取并更新AccessToken,确保接口调用顺畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个坑是测试号运行功能没问题到服务器上就出问题--这种情况也算比较粗心吧:

     这种情况下要检查的几项:

          1、APPID跟APPsecret 是否是跟你所用的公众号一致,这里不一致容易导致报openID:40003

          2、服务器的IP地址是否在你的公众号IP白名单里,如果没有容易报:40164

          3、注意查看公众号的认证状态 如果没有认证开发模式下的接口是不能用的 只要状态显示的是没认证

第二个坑也不算是坑吧一个小知识吧 在spring集成的项目中 自动获取accesstoken并更新:

这个accesstoken在重新获取刷新的这段时间 五分钟内 新的老的都可以用

package com.leyou.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.leyou.entity.AccessTocken;
import com.leyou.service.UpdateAccessTokenService;
import com.leyou.util.WeiXinUtil;


@Component
@Configuration      //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling 
public class Test {
//	Logger logger = LoggerFactory.getLogger(Test.class);

  
	@Autowired
	private UpdateAccessTokenService UpdateAccessTokenService;
    // 第一次延迟1秒执行,当执行完后7100秒再执行
    @Scheduled(initialDelay = 1000, fixedDelay = 7000*1000)
    public void getWeixinAccessToken(){
        AccessTocken at = WeiXinUtil.getAccessTocken();
                UpdateAccessTokenService.updateAccessToken(at.getId(),at.getToken(),at.getExpiresIn());
        System.out.println("Test:"+at.getToken());
//        at = UpdateAccessTokenService.getAccessTokenfromDB();
//        System.out.println(at.getToken());
//        String openid = "obpaF0tUE9WRtqrXdEbUsvmKraiQ";
//        UserInf us  = UserUtile.getUser(openid,at.getToken());
//        System.out.println("UnionID:"+us);
    }
}

这里并没有用@SpringBootApplication注解原因就在于@Scheduled这个注解有时候用@SpringBootApplication他并不会执行

获取accesstoken的那个方法我并没有写 可以根据api去进行编写 

还有一些小知识 只有在微信公众号绑定了微信开放平台的时候 他才能获取unionID。小程序也一样

当然了 微信开放平台 审核 300  

以上的东西其实公众号api里讲的很明白

### 通过 UnionID 获取微信公众号用户信息 为了利用 UnionID 来获取微信公众号中的用户信息,开发者需遵循特定流程来实现这一目标。UnionID 是指当同一开放平台账号下的不同应用被同一个微信用户关注或绑定时,这些应用间可以获取到该用户的统一标识符——即 UnionID。 #### 准备工作 确保已获得用户的同意并通过 OAuth2.0 授权码模式获得了 `code` 参数以及对应的 OpenID 和 Access Token。对于已经绑定了相同开放平台账户的应用程序来说,在获取到了某个用户的 OpenID 后还可以进一步得到其 UnionID[^2]。 #### 正确构建 API 请求 URL 一旦拥有了必要的参数(如 AppID, Secret, Code),就可以向微信服务器发送请求以换取 access_token: ```http GET https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code ``` 接着使用返回的结果中的 openid 或者 unionid 构建如下形式的信息查询URL: ```http GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN ``` 如果要基于 UnionID 查询,则替换其中的 OPENID 字段为 UNIONID 即可[^1]。 需要注意的是,并不是所有的场景下都能直接拿到 UnionID;只有在同一开放平台内的多个应用之间共享数据时才会涉及到此字段。因此,在设计应用程序逻辑前应当确认当前环境是否满足条件[^3]。 另外值得注意的一点是在本地环境中调试可能会遇到一些权限上的限制,建议按照官方指南完成相应的配置调整以便顺利进行开发测试工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值