Maison >Java >javaDidacticiel >Java utilise openid pour obtenir des micro-informations sur l'utilisateur
Cet article présente principalement en détail la douzième étape du développement de la plateforme publique Java WeChat. L'acquisition des informations sur les utilisateurs WeChat a une certaine valeur de référence. Les amis intéressés peuvent se référer au
précédent L'article parle d'une série. d'articles sur le développement de WeChat, y compris l'acquisition de jetons, la création de menus, etc. Dans cet article, nous décrirons comment obtenir des informations sur les utilisateurs de WeChat dans le développement de la plateforme publique WeChat. Dans l'article précédent, nous avons parlé des utilisateurs de WeChat et de la connexion entre WeChat. les comptes publics peuvent être liés via Openid, nous utilisons donc ici openid pour obtenir des informations sur les utilisateurs WeChat et implémenter un scénario d'application simple : lorsqu'un nouvel utilisateur WeChat suit notre plate-forme publique WeChat, nous répondons automatiquement avec une image et un message texte, puis le titre dans le message graphique est : [Cher : XXX, bonjour ! ], et l'image dans le message graphique est l'avatar WeChat de l'utilisateur, comme indiqué ci-dessous :
Pour les documents sur l'obtention d'informations sur l'utilisateur WeChat, nous pouvons nous référer à : mp.weixin .qq .com/wiki/1/8a5ce6257f1d3b2afb20f83e72b72ce9.html .
(1) Mise en œuvre de l'obtention des messages WeChat des utilisateurs
Une fois que l'abonné a interagi avec le compte officiel pour générer des messages, le compte officiel peut obtenir l'OpenID de l'abonné (crypté pour WeChat, l'OpenID de chaque utilisateur pour chaque compte officiel est unique. Pour différents comptes officiels, l'openid du même utilisateur est différent). Les comptes publics peuvent obtenir des informations utilisateur de base basées sur OpenID via cette interface, notamment le surnom, l'avatar, le sexe, la ville, la langue et l'heure de suivi.
Méthode de requête http : GET api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
at Ici, j'ai écrit une classe de méthode GetUseInfo.java. Dans la méthode, il suffit de passer openid pour revenir (pseudo, image, sexe [d'autres paramètres peuvent être obtenus par vous-même]) Le code est implémenté comme suit :
.package com.cuiyongzhi.wechat.common; import java.util.HashMap; import com.cuiyongzhi.web.util.GlobalConstants; import com.cuiyongzhi.wechat.util.HttpUtils; import net.sf.json.JSONObject; /** * ClassName: GetUseInfo * @Description: 获取微信用户信息 * @author dapengniao * @date 2016年3月18日 下午2:00:52 */ public class GetUseInfo { /** * @Description: 通过openid获取用户微信信息 * @param @param openid * @param @return * @param @throws Exception * @author dapengniao * @date 2016年3月18日 下午2:01:30 */ public static HashMap<String, String> Openid_userinfo(String openid) throws Exception { HashMap<String, String> params = new HashMap<String, String>(); params.put("access_token", GlobalConstants.getInterfaceUrl("access_token")); //定时器中获取到的token params.put("openid", openid); //需要获取的用户的openid params.put("lang", "zh_CN"); String subscribers = HttpUtils.sendGet( GlobalConstants.getInterfaceUrl("OpenidUserinfoUrl"), params); System.out.println(subscribers); params.clear(); //这里返回参数只取了昵称、头像、和性别 params.put("nickname", JSONObject.fromObject(subscribers).getString("nickname")); //昵称 params.put("headimgurl", JSONObject.fromObject(subscribers).getString("headimgurl")); //图像 params.put("sex", JSONObject.fromObject(subscribers).getString("sex")); //性别 return params; } }
(2)Suivez et répondezMise en œuvre d'images et de messages texte
Il est dit dans la première partie [Après que les abonnés interagissent avec le compte public pour générer des messages, le public Le compte peut obtenir l'OpenID du follower]. Dans notre scénario, l' événement qui obtient l'openid du follower est l'événement d'attention de l'utilisateur. En même temps, nous répondons également passivement. au message graphique (image et texte) du suiveur dans l'événement d'attention. Pour la mise en œuvre de la réponse au message, veuillez vous référer à : Développement de la plateforme publique Java WeChat (5) Mise en œuvre de la réponse au message texte et graphique), le processus de mise en œuvre :
Obtenez l'openid en suivant l'événement et appelez l'interface d'informations utilisateur pour obtenir des abonnés Interfaces associées
Définissez le titre et l'image du message graphique dans la réponse passive à l'événement de suivi et répondez au suiveur ;
Le code simple est implémenté comme suit :
//对图文消息 NewsMessage newmsg=new NewsMessage(); newmsg.setToUserName(openid); newmsg.setFromUserName(mpid); newmsg.setCreateTime(new Date().getTime()); newmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS); if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { // 关注事件 System.out.println("==============这是关注事件!"); try { HashMap<String, String> userinfo=GetUseInfo.Openid_userinfo(openid); Article article=new Article(); article.setDescription("欢迎来到崔用志的个人博客:菜鸟程序员成长之路!"); //图文消息的描述 article.setPicUrl(userinfo.get("headimgurl")); //图文消息图片地址 article.setTitle("尊敬的:"+userinfo.get("nickname")+",你好!"); //图文消息标题 article.setUrl("http://www.cuiyongzhi.com"); //图文url链接 List<Article> list=new ArrayList<Article>(); list.add(article); //这里发送的是单图文,如果需要发送多图文则在这里list中加入多个Article即可! newmsg.setArticleCount(list.size()); newmsg.setArticles(list); return MessageUtil.newsMessageToXml(newmsg); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("====代码有问题额☺!"); logger.error(e,e); } }
Enfin, nous pouvons jeter un œil à notre Afin de voir les résultats de manière très intuitive, j'ai abandonné puis suivi à nouveau, comme indiqué ci-dessous :
[Recommandations associées]
2. 🎜>3. Analyse complète des annotations Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!