第一个坑是测试号运行功能没问题到服务器上就出问题--这种情况也算比较粗心吧:
这种情况下要检查的几项:
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里讲的很明白