关于openid和access_token的问题

时间:2021-08-16 04:51:16
测试号能收到我发的消息,并且能被动回复文本消息,就是说FromUserName即openID没有错,但获取用户头像的时候(UnionID机制)返回结果
{"errcode":40003,"errmsg":"invalid openid hint: [LIS9Xa0127vr19]"}是怎么回事,
先上代码

//获取用户基本信息的地址(UnionID机制) GET
    public final static String userinfo_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
    /**
     * 获取用户基本信息(UnionID机制)
     */
    public static JSONObject  getUserinfo(String access_token,String openid){
     String url = userinfo_url.replace("ACCESS_TOKEN", access_token).replace("OPENID", openid);
     JSONObject jsonObject =  httpsRequest(url, "GET", null);
     return jsonObject;
    }
就是通过这个请求得到的结果是openID无效
我的accessToken通过以下线程获取:

关于openid和access_token的问题

线程调用到的方法:
//获取AccessToken的地址 GET
    public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
    /**
     * 获取全局借口调用凭证access_token
     * @param appid
     * @param appsecret
     * @return
     */
    public static AccessToken  getAccessToken(String appid, String appsecret){
     String url = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
     JSONObject jsonObject = httpsRequest(url, "GET", null);
    
     AccessToken accessToken = new AccessToken();
     accessToken.setAccess_token(jsonObject.getString("access_token"));
     accessToken.setExpires_in(jsonObject.getInt("expires_in"));
    
     return accessToken;
    }
关于openid和access_token的问题
这里我通过线程获取accessToken,FromUserName之前说过能被动回复消息,也是没错的,然后执行第一个给的代码getUserinfo就报 openID 无效

通过第三方的方法获取:

然后我通过网页来获取用户信息
//网页授权获取用户基本信息的地址
    public final static String user_info_oauth_url = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
    /**
     * 网页授权获取用户基本信息
     * @return
     */
    public static JSONObject  getUserInfoByOAuth(String access_token,String openid){
     String url = user_info_oauth_url.replace("ACCESS_TOKEN", access_token).replace("OPENID", openid);
     JSONObject jsonObject = httpsRequest(url, "GET", null);
     return jsonObject;
    
    }

关于openid和access_token的问题
对应代码
关于openid和access_token的问题
没提示openID不对,说accessToken没找到,而我通过输出code,然后自己把appid和appsecret和code替换请求地址,是有 正确的Json返回信息,至于说没找到accessToken的原因是我的JsonObject为空,这里也是不明白,手动有返回,代码提交请求没得到东西

总结:
openID是不可能错的,可在测试号看到关注者的openID,是一样的,应该是线程获取的accessToken有错,导致请求时出错,但我并不知道为什么有错。

有大神帮忙看一下不

1 个解决方案

#1


关于openid和access_token的问题是自己在web.xml里有问题,那里的appid和appsecret不对导致的错误,搞到我还看了两天。。。

#1


关于openid和access_token的问题是自己在web.xml里有问题,那里的appid和appsecret不对导致的错误,搞到我还看了两天。。。