微信公众平台开发之用户绑定

微信公众平台开发之用户绑定作为一个刚毕业的大学生 一进公司就被安排到新的项目组进行微信公众平台开发 作为一个菜鸟 顿时觉得压力山大 最重要的是 公司里还没有人做个这方面 一直都只能靠自己摸索 这篇文章只能说是我个人在做微信开发过程中的一些记录 在微信公众平台里 每个用户对每个公众号的 OpenID 是唯一的 对于不同公众号 同一用户的 openID 不同 所以用户绑定 可以用 OpenID 绑定 也可以用 OpenID 来获取用户

作为一个刚毕业的大学生,一进公司就被安排到新的项目组进行微信公众平台开发。作为一个菜鸟,顿时觉得压力山大,最重要的是,公司里还没有人做个这方面,一直都只能靠自己摸索。

这篇文章只能说是我个人在做微信开发过程中的一些记录。

在微信公众平台里,每个用户对每个公众号的OpenID是唯一的,对于不同公众号,同一用户的openID不同。所以用户绑定,可以用OpenID绑定,也可以用OpenID来获取用户的基本信息。至于怎样获取OpenID,我是通过网页OAuth2.0方式来获取的。有一篇教程写得很详细,大家可以按照这个教程去弄,应该都可以获取到用户的基本信息。

http://www.2cto.com/weixin/201405/303993.html 

我实现获取OpenID的整个流程是

1、需要在网页设置超链接提交HTTP请求到

https://open.weixin..com/connect/oauth2/authorize?appid=wxb1bbd8e52403fc1e&redirect_uri=http://dev.XXXch.com.cn:7979/weixin/oauth2.action&response_type=code&scope=snsapi_base&state=1#wechat_redirect

会返回一个code,在Action中

微信公众平台开发之用户绑定

获取code,

2、在action中提交HTTP请求用于获取OpenID

https://api.weixin..com/sns/oauth2/access_token?appid=wx88888&secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&code=02a9bed29b2185a9f0ed3a48fe56e700&grant_type=authorization_code
返回

{
    
"access_token"
:
"OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5Y6vey3dgDtFki5C8r6D0E6mSVxxtb8BjLMhb-mCyT_Yg"
,
    
"expires_in"
:
7200
,
    
"refresh_token"
:
"OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5YBkF0ZUH1Ew8Iqea6x_itq13sYDqP1D7ieaDy9u2AHHw"
,
    
"openid"
:
"oLVPpjqs9BhvzwPj5A-vTYAX3GLc"
,
    
"scope"
:
"snsapi_base"
}

关于怎么在Action中提交HTTP请求这是我个人的实现方法,可能会有点low

public String sendRequest(URL url,String para){

String result = null;
try {

HttpURLConnection  conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
   conn.setRequestProperty(“Pragma:”, “no-cache”);
   conn.setRequestProperty(“Content-type”, “text/xml”);
   conn.setRequestProperty(“Accept-Charset”, “utf-8”);
   conn.setRequestProperty(“contentType”, “utf-8”);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod(“GET”);

OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(),”UTF-8″); 
out.write(para);
out.flush();
out.close();

BufferedReader in = new BufferedReader( new InputStreamReader( conn.getInputStream(),”utf-8″) );
String line = “”;
   StringBuffer buffer = new StringBuffer(1024);
    while ( null != (line = in.readLine())){

    buffer.append(line);
    }
   in.close();
   result = buffer.toString();
}catch(IOException e){

e.printStackTrace();
}
return result;
}






























把需要提交的参数拼接成字符然后交给上面的方法即可,返回结果是String对象

URL url = new URL(“http:\\xxxx”);

String param = “appid=wxb1bbd8e52403fc1e&secret=3414fcf81a7141db99088f0150e78ba5&code=”+code+”& grant_type=authorization_code”;

用一个String来接收即可

String result = sendRequest(url,param);  
    JSONObject jsonObject=JSONObject.fromObject(result);
    String access_token=jsonObject.getString(“access_token”);
    
    String openid=jsonObject.getString(“openid”);
    session.setAttribute(“openid”, openid);
    session.setAttribute(“ip”, ip);

到此为止,获取OpenID就结束了,因为我做的用户绑定,我只用到OpenID,所以并没有做获取用户基本信息一步,







不过也只是再提交一个HTTP请求即可获取https://api.weixin..com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID返回的是JSON,应该可以再次调用sendRequest来提交HTTP请求的。

     




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214531.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:02
下一篇 2026年3月18日 下午4:02


相关推荐

  • C++基本概念_c语言 c++区别

    C++基本概念_c语言 c++区别1.    面向对象的程序设计思想是什么?答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.    什么是类?答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。 3.    对象都具有的二方面特征是什么?分别是什么含义?答:对象都具有的特征是:静态特征和动态特征。静态特征是指能描述对象的一些属性;动态特征是指对象表现出来的行为;

    2022年10月3日
    2
  • linxu navicat15 激活码[最新免费获取]

    (linxu navicat15 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    48
  • 图像的卷积操作

    图像的卷积操作原理:给定一个奇数尺寸大小的卷积核,对图像进行卷积操作。因为使用奇数尺寸大小的卷积核,其锚点正好在卷积核正中央的位置。如下图中间画了一个锚的就是锚点使锚点覆盖在待计算像素上面,然后计算像素值与被覆盖的卷积核中的值的乘积和。将这个和赋值给当前像素,这就是卷积的过程。公式如下所示此处会有一个问题,如果锚点落在第一个像素点(1,1)上,卷积核当中锚点左侧和上方的卷积值超出了图像的边界外…

    2022年5月27日
    55
  • word在试图打开文件时遇到错误[通俗易懂]

    word在试图打开文件时遇到错误[通俗易懂]昨天晚上在台式机上写了个word文档,发到邮箱。今天在邮箱上下载后就打不开了,出现“word在试图打开文件时遇到错误”。让人很郁闷,因为两台电脑上装的都是word2016.。。。看到网上说的是用WPS打开,之后再另存为,可是我早已没有了WPS。突然灵光一现,我点击了该文档的属性:有个解除锁定,我在上面划勾,点击确定后,再次打开,竟然就打开了~~~~开心~20170825周

    2022年4月28日
    83
  • velocity定义_velocity模板

    velocity定义_velocity模板文章目录基本用法导入依赖1.基本用法1.1注释1.2替换变量1.3不解析,原文输出1.4调用对象方法指令setifelse基本用法导入依赖<dependency> <groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency&

    2022年10月19日
    4
  • PHP面试中经常出现的composer 问题总结[通俗易懂]

    PHP面试中经常出现的composer 问题总结

    2022年2月17日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号