怎么在微信接口获取openid返回的数据中获取openid

关于微信获取openid列表的接口的问题-php教程-PHP中文网QQ群微信公众号还没有收藏关于微信获取openid列表的接口的问题关于微信获取openid列表的接口的问题对于这个接口我有两个问题,希望接触过的朋友能够解答一下,百度了一下发现没有找到想要的答案。1.此接口返回的openid列表是根据什么来排序的?我测试的时候发现并不是按照用户关注的先后来排的,貌似也不是按用户昵称首字母。2.在返回的openid列表中,我能知道哪个openid是最新关注的吗?回复内容:第二个可以知道,你再关注的地方写入你本地数据库
就知道他们关注的顺序了以上就是关于微信获取openid列表的接口的问题的内容,更多相关内容请关注PHP中文网()!共3篇0点赞收藏分享:.&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号获取用户信息开发的基本原理:
& 无论是获取单个用户用户信息,还是获取多个用户信息都离不开腾讯提供的接口,所以,我们要进行获取用户基本信息的开发,就要对接这二类接口的参数进行分析,看看这二类接口必须使用的参数是什么,知道了这些参数就可以编写代码进行开发了。
& 获取用户信息的接口url:https://api./cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
& 批量获取用户信息接口url:https://api./cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN
& 批量获取用户信息的POST数据示例:
&user_list&: [
&openid&: &otvxTs4dckWG7imySrJd6jSi0CWE&,
&lang&: &zh-CN&
&openid&: &otvxTs_JZ6SEiP0imdhpi50fuSZg&,
&lang&: &zh-CN&
& 也就是说要批量获取用户基本信息需要使用上面的json数据。
通过上面简单的分析可以知道获取单个用户信息和批量获取多个用户信息异同点:
& 1)都需要使用access_token。
& 2)都需要openid。
& 1)接口url不同,一个获取单个用户信息的接口url只需要二个参数access_token和openid,后面的语言lang不是必须选项可有可无;批量获取用户信息的接口的参数只有access_token,而openid则是以json形式传递给接口url的。
& 2)获取的用户数量不同,很明显批量获取的用户可以一次最多获取100个用户的基本信息,而单个获取用户信息的接口一次只能获取到一个用户信息。
& 通过上面的对比我们可以知道只要获取的access_token和微信用户的openid就可以获取用户基本信息了。
程序开发开始
& 1)获取access_token:关于获取access_token的方便有三种,在微信连已经有了详细的讲解教程,这里不再重复,请看教程&&即可。
& 2)获取openid:只要是关注用户与微信众号交互腾讯就会发送这个用户的openid给公众号,所以,如何获取openid这个也简单,我们在微信连相关的教程里面也已经详细讲解了,在本教程开发教程里面将直接把这openid拿过来使用,因为,获取opendi总是非常容易的。
& openid 就是FromUserName,关注我的公众号的用户openid是:o7OhVwSjlhtj8ly782GjxEVW6N8Q
& 3)编写http_request函数:这个函数的作用是用来把数据以http请求的方式提交给获取用户信息的接口url。
& 在微信连网站里同我们已经对这个函数作了详细分析,这里不再重复。
& 4)获取用户基本信息:
& 当通过上面的第三步的函数http_request后,获取到了一个json数据包,如下所示的json数据:
&subscribe&:1,
&openid&:&o7OhVwSjlhtj8ly782GjxEVW6N8Q&,
&nickname&:&织梦&,
&language&:&zh_CN&,
&city&:&&,
&province&:&山东&,
&country&:&中国&,
&headimgurl&:&&,
&subscribe_time&:,
&remark&:&&,
&groupid&:0,
&tagid_list&:[]
& 使用json_encode()函数,把这个json数据转换成对象,然后,直接从对象里面获取这些用户信息。
最终代码是(把这段代码保存到文件get_userinfo.php里面):
//防止中文乱码
require_once 'get_token.php';
require_once 'common.php';
header('content-type:text/charset=utf-8');
//指定获取用户的$formUsername
$fromUsername = &o7OhVwSjlhtj8ly782GjxEVW6N8Q&;
$url = &https://api./cgi-bin/user/info?access_token={$access_token}&openid={$fromUsername}&;
//发送请求
$res = http_request($url, null);
$res = json_decode($res);
//获取我们需要的各种信息
$nickname = $res-&
$country = $res-&
$province = $res-&
$city = $res-&
$address = $country. ' '. $province. ' '. $
$sex = $res-&
//获取用户的头像
$head_imgurl = $res-&
//我们获取小头像地址
$samll_head_imgurl = substr($head_imgurl, 0, -1).&132&;
echo '用户信息如下&br/&';
echo &昵称:{$nickname}&br/&国家:{$country}&br/&省份:{$province}&br/&城市:{$city}&br/&性别:{$sex}&br/&&;
echo &用户的小头像:&img src='{$samll_head_imgurl}'/&&br/&&;
echo &用户的大头像:&img src='{$head_imgurl}'/&&br/&&;
& 请注意请进入到&&教程里面获取文件get_token.php和common.php的代码。
& 通过上面的代码处理后就获取到了关注用户的基本信息了。
批量获取用户基本信息开发
& 跟获取单个用户的基本信息几乎完全一样,我们只要把不同点分析出来其它就不再重复了。
& 获取多用户基本信息使用了json数据作为参数,这相当于获取单个用户信息的openid的扩大版。
& 获取单用户信息是使用$fromUsername = &o7OhVwSjlhtj8ly782GjxEVW6N8Q&;
& 批量获取用户基本信息是通过:
&user_list&: [
&openid&: &o7OhVwSjlhtj8ly782GjxEVW6N8Q&,
&lang&: &zh-CN&
&openid&: &otvxTs_JZ6SEiP0imdhpi50fuSZg&,
&lang&: &zh-CN&
& 上面已经提到过了openid就是$fromUsername。
& 所以,只需要在上面的获取单用户基本信息的代码基础上作如下改动,即可成为批量获取用户基本信息的代码。
改动如下:
& 1)去掉代码$fromUsername = &o7OhVwSjlhtj8ly782GjxEVW6N8Q&;
&&& 因为,批量获取用户信息是通过json数据包,所以,添加上json数据。
& 只需要将上面的json数据作为一个字符串声明到一个变量$data里同即可。
& 2)修改函数http_request($url,NULL)为http_request($url,$data)。
& 因为,获取单用户不需要json数据,所以,在这个函数里面不需要第二个参数,而批量获取用户信息则需要$data数据。
& 其它代码完全一样,当然,这样您获取到的信息输出到浏览时就要注意了,因为,获取的是批量的用户基本信息,与获取单用户信息稍有不同,不过这已经是html代码的问题。
保存用户基本信息到数据库
& 上面讲的是如何通过接口获取单个用户或批量获取用户信息的内容,当获取到了用户后接下来就是把用户信息保存到数据库表中,这样做的目的是为了以后分析用户数据查询方便,这是非常重要的。
& 首先创建数据库表:
CREATE TABLE IF NOT EXISTS userinfo (
id int UNSIGNED PRIMARY KEY auto_increment,
openid varchar(255) NOT NULL DEFAULT '',
nickname varchar(255) NOT NULL DEFAULT '',
headurl varchar(255) NOT NULL DEFAULT '',
address varchar(255) NOT NULL DEFAULT '',
sex varchar(255) NOT NULL DEFAULT '',
mes varchar(255) NOT NULL DEFAULT '说的什么吧!'
) ENGINE = MyISAM DEFAULT CHARSET = utf8;
& 这个表里面保存了获取到的用户的基本信息内容,比如openid、呢称、头像等。
& 其次,编写代码把获取到的用户信息插入到数据库表中,这个就简单了,在上面的文件get_userinfo.php里面添加如下代码即可:
$connect = mysql_connect('localhost', 'root', 'root');
mysql_select_db('wxdb', $connect);
mysql_query('SET NAMES UTF8');
$sql = &INSERT INTO `userinfo` (id, openid, nickname, headurl, address, sex, mes) VALUES(NULL, '{$formUsername}', '{$nickname}', '{$samll_head_imgurl}', '{$address}', '{$sex}', '说点什么吧!')&;
mysql_query($sql);
echo '保存ok';
& 这样就把获取到的用户信息保存到数据库表里面了。
& 我们还可以开发一个功能用来在手机上面显示获取到的用户信息,甚至可以进行分页,因为,关注我们公众号的用户有可能非常多,所以,分页是必须的,关于这些内容已经是php技术这里不讲解,不会分页或输出数据的请学习php知识。
请注意:上面我们是把代码写在文件get_userinfo.php里面的,我们还可以写到文件wx_sample.php 里面,让用户一关注我们就把其信息写到数据库表里面,还可以做其它的处理,这就要根据企业的业务需要进行开发了,上面只是演示了如何通过获取用户基本信息接口来开发的基本能力和基本要求,有时候企业的要求是相当复杂的,但是,再怎么复杂也离不开微信提供的这些接口,只有把这些基础的内容掌握了,才能开发出更加复杂的功能来。
下一篇:没有了
PHPOS微信网:专注于、、技术研究,为网站前后台和微信开发工程师提供教程资源。||——只需一步,快速开始
扫一扫,登录网站
后使用快捷导航没有帐号?
微信小程序授权获取用户详细信息openid
第一种使用wx.getUserInfo直接获取微信头像,昵称.
第二种 我们在使用小程序wx.login API进行登录的时候,直接使用wx.getUserInfo是不能获取更多的信息的,如微信用户的openid。 ...
获取用户的头像昵称openid之类第一种使用wx.getUserInfo直接获取微信头像,昵称wx.getUserInfo({
success: function (res) {
that.setData({
nickName: res.userInfo.nickName,
avatarUrl: res.userInfo.avatarUrl,
})12345678第二种&我们在使用小程序wx.login API进行登录的时候,直接使用wx.getUserInfo是不能获取更多的信息的,如微信用户的openid。&官方提示,需要发送获取到的code进行请求到微信的后端API,进行用户解密之类的操作才可以获取,根据文档,只需要进行一个get请求到如下地址即可:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
appid和secret在微信小程序后台可以看到,js_code为使用wx.login登录时获取到的code参数数据,grant_type这个不用改动。1234js文件 var openId = (wx.getStorageSync('openId'))
if (openId) {
wx.getUserInfo({
success: function (res) {
that.setData({
nickName: res.userInfo.nickName,
avatarUrl: res.userInfo.avatarUrl,
fail: function () {
console.log("获取失败!")
complete: function () {
console.log("获取用户信息完成!")
wx.login({
success: function (res) {
console.log(res.code)
if (res.code) {
wx.getUserInfo({
withCredentials: true,
success: function (res_user) {
wx.request({
url: 'https://....com/wx/login',
code: res.code,
encryptedData: res_user.encryptedData,
iv: res_user.iv
method: 'GET',
'content-type': 'application/json'
success: function (res) {
that.setData({
nickName: res.data.nickName,
avatarUrl: res.data.avatarUrl,
wx.setStorageSync('openId', res.data.openId);
}, fail: function () {
wx.showModal({
title: '警告通知',
content: '您点击了拒绝授权,将无法正常显示个人信息,点击确定重新获取授权。',
success: function (res) {
if (res.confirm) {
wx.openSetting({
success: (res) =& {
if (res.authSetting["scope.userInfo"]) {
wx.login({
success: function (res_login) {
if (res_login.code) {
wx.getUserInfo({
withCredentials: true,
success: function (res_user) {
wx.request({
url: 'https://....com/wx/login',
code: res_login.code,
encryptedData: res_user.encryptedData,
iv: res_user.iv
method: 'GET',
'content-type': 'application/json'
success: function (res) {
that.setData({
nickName: res.data.nickName,
avatarUrl: res.data.avatarUrl,
wx.setStorageSync('openId', res.data.openId);
}, fail: function (res) {
}, complete: function (res) {
globalData: {
userInfo: null
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113后台是php 框架是laravel5.4版本官方文档:
https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
微信官方提供了多种编程语言的示例代码(点击下载)。每种语言类型的接口名字均一致。调用方式可以参照示例。1234下载之后在php文件中引入:
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Models\Wechatuser;
include_once
app_path('/Http/Controllers/Admin/PHP/wxBizDataCrypt.php');
public function getWxLogin(Request $request)
$request-&get('code');
$encryptedData
$request-&get('encryptedData');
$request-&get('iv');
$URL = "https://api./sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
$apiData=file_get_contents($URL);
if(!isset($apiData['errcode'])){
$sessionKey = json_decode($apiData)-&session_
$userifo = new \WXBizDataCrypt($appid, $sessionKey);
$errCode = $userifo-&decryptData($encryptedData, $iv, $data );
if ($errCode == 0) {
return ($data . "\n");
return false;
}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647官方文档的登录流程图,整个登录流程基本如下图所示:
刚表态过的朋友 ()
原作者: 今天一点也不冷微信订阅号如果获取openId
TMD,一开始用微信的测试号来开发;发现网页授权什么的权限都有;开发完了;用正式号(订阅号)发现没有该权限来获取openId,网上有说通过关注者信息获取openid在给关注着回复一条带上openId的信息;让其通过该条信息来确认;但是该信息可能转发;就不能保证是这个是关注者链接过来的;
有么有什么好的实现方式;求大神支招
花钱吧,只有服务号才可以
好弄得得很,你不是已经注册订阅号了么,尽量不要用发送消息获取方式,因为你一旦开启开发者模式后,订阅号菜单都需要编程来设置,比较麻烦,我们做法更暴力,就是你在申请一个【服务号】然后用服务号提供的oauth2授权,这样既可以达到你不关注服务号,只是关注订阅号(就跟逻辑思维那个是一样的效果),也能获取用户微信ID 也就是openid,如果只是获取用户openid,可以选择静默授权方式,用户不用点击登录按钮,然后如果springmvc的项目 我有现成的源码,免费送啊
--- 共有 15 条评论 ---
回复 : 加我qq 我给你
Hi,刚好也遇到了这个问题,方便的话也发我一份吧,先谢了,邮箱:
你好!我最近也在做这个。能不能发一份给我研究一下。万分感谢!
我最近在弄这个,订阅号权限问题很烦人,您能把源码发给我研究一下吗?邮箱
您好!我这也在开发着java的spring项目,请你也给我一份好吗!?我的qq是,先谢谢咯
能给我一份吗?我的qq邮箱
微信开放平台。。。
引用来自“草根227”的评论我解决了利用unionid机制,用到服务号和订阅号结合,比如在订阅号点击的连接带有openid参数,如果不是另外一个人点击这个带有参数的连接,就用服务号的微信网页授权直接获取openid2,通过openid2获取到unionid,因为服务号和订阅号的unionid是一样的,如果是另外一个用户点击连接,获取到unionid会不同,这就判断不是同一个人,就可以不获取get的值,然后引导新点击的用户去关注后再进入7017人阅读
java微信(3)
首先我们要先看一下文档&
重点的话就是这里的授权页面的参数,文档的话希望自己去看和理解,比较这个方面的话,前辈已经写了很多了,我只是想把我自己的写出来提供参考。
首先肯定的配置微信公众号里面的内容,这里就不多说了也就是域名,js域名,token,这方面的东西,都好之后我这里是从菜单说去,应该挺详细的。
创建微信的一二级菜单,具体的话可能要自己去找资料了。这里只有一级菜单。
接下来我就来解释一下就是通过url得到code,通过code得到openid 然后得到用户信息这样一个思路.
当我们点击,每个人都有的按钮 通过url 后面的域名 & redirect_uri=/task/technician/check&
进入我们的 task/technician/check &这个方法传一个code值过去,同时参数appid是填写自己公众号的,其它的基本可以默认,就行.
//授权页面
buttonBuys.put(&url&, &https://open./connect/oauth2/authorize?&+ &appid=&+appid+&&redirect_uri=&
+ &/task/technician/check&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect&);
* 创建自定义菜单
public static void createMenu() throws Exception {
String appid = WxConfig.APPID;
JSONObject buttonBuys = new JSONObject();
buttonBuys.put(&type&, &view&);
buttonBuys.put(&name&, &每个人都有&);
//授权页面
buttonBuys.put(&url&, &https://open./connect/oauth2/authorize?&
+ &appid=&+appid+&&redirect_uri=&
+ &/task/technician/check&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect&);
// menuKnow 一级菜单
JSONObject menuKnow = new JSONObject();
menuKnow.put(&type&, &view&);
menuKnow.put(&name&, &我要发布任务&);
//授权页面
menuKnow.put(&url&, &https://open./connect/oauth2/authorize?&
+ &appid=&+appid+&&redirect_uri=&
+ &/task/employer/check&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect&);
JSONArray buttonsAll = new JSONArray();
buttonsAll.add(buttonBuys);
buttonsAll.add(menuKnow);
JSONObject menu = new JSONObject();
menu.put(&button&, buttonsAll);
menu.toString();
MpApi.menuCreate(menu.toString());
MpApi.menuQuery();
MpApi.menuCreate(menu.toString()); //这里是调用微信的创建接口 需要自己 post 或者 get 到微信就行了
private static final String CreateMenuUrl =https://api./cgi-bin/menu/create?access_token=ACCESS_TOKEN
MpApi.menuQuery(); //这里是调用微信的查询接口
需要自己 post 或者 get 到微信就行了
private static final String QueryMenuUrl =https://api./cgi-bin/menu/get?access_token=ACCESS_TOKEN
MpApi.GetPageAccessTokenUrl //这里接口在下面&
去掉 mpapi 调用接口就行了
如上说的,我们通过url进入了我们方法得到code,接下来就是得到code了,如果url通过了我们可以直接得到code值
* 技术人员任务判断
* @param session
* @param model
* @param code
@RequestMapping(&/technician/check&)
public String check(HttpSession session, Map&String, Object& model,) {
String openId =
String code = request.getParameter(&code&);//我们要的code
openId = getTheCode(session, code, openId);
} catch (Exception e) {
e.printStackTrace();
private String getTheCode(HttpSession session, String code, String openId) {
if (code != null)
openId = userService.getOpenid(code);// 调用根据用户的code得到信息
// 获取基础刷新的接口访问凭证
AccessToken accessToken = AccessTokenUtil.queryAccessToken();
User userinfo = userinof.getUserInfo(accessToken.getAccess_token(),openId);
System.out.println(&昵称:& + userinfo.getNickname());
if (userinfo.getOpenid() == null)
// 得到保存在session的微信信息
User loginUser = BaseUserController.getLoginUser(session);
openId = loginUser.getOpenid();
System.out.println(openId + &你是&);
addSessionUser(session, userinfo);
return openId;
getOpenid 方法
* 识别得到用户id必须的一个值
* @param code
// 根据用户的code得到用户OpenId
public String getOpenid(String code) {
UserinofService weixinGetCode = new UserinofService();
Map&String, Object& result = weixinGetCode.oauth2GetOpenid(code);
String OpenId = (String) result.get(&Openid&);// 得到用户id
return OpenId;
UserinofServicele类
package xyz.mon.
import net.sf.json.JSONO
import xyz.mon.weixinapi.HttpU
import xyz.mon.weixinapi.MpA
import xyz.ibenben.parttime.user.entity.U
import org.springframework.stereotype.S
import java.util.HashM
import java.util.M
import org.apache.http.client.HttpC
import org.apache.http.client.ResponseH
import org.apache.http.client.methods.HttpG
import org.apache.http.impl.client.BasicResponseH
import org.apache.http.impl.client.DefaultHttpC
import org.slf4j.L
import org.slf4j.LoggerF
* 扫描就获取用户信息
* @param accessToken
接口访问凭证
* @param openId
* @return WeixinUserInfo
public class UserinofService {
* 得到微信用户信息
* @param accessToken
* @param openId
User getUserInfo(String accessToken, String openId) {
Logger log = LoggerFactory.getLogger(HttpUtil.class);
User weixinUserInfo =
// 拼接请求地址
String requestUrl = &https://api./cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&;
requestUrl = requestUrl.replace(&ACCESS_TOKEN&, accessToken).replace(
&OPENID&, openId);
// 获取用户信息
JSONObject jsonObject = HttpUtil
.httpsRequest(requestUrl, &GET&, null);
if (null != jsonObject) {
weixinUserInfo = new User();
// 用户的标识
weixinUserInfo.setOpenid(jsonObject.getString(&openid&));
weixinUserInfo.setNickname(jsonObject.getString(&nickname&));
// 用户的性别(1是男性,2是女性,0是未知)
weixinUserInfo.setSex(jsonObject.getInt(&sex&));
// 用户所在国家
weixinUserInfo.setCountry(jsonObject.getString(&country&));
// 用户所在省份
weixinUserInfo.setProvince(jsonObject.getString(&province&));
// 用户所在城市
weixinUserInfo.setCity(jsonObject.getString(&city&));
// 用户头像
weixinUserInfo.setHeadImage(jsonObject.getString(&headimgurl&));
} catch (Exception e) {
if (0 == weixinUserInfo.getSubscribe())
log.error(&用户{}已取消关注&, weixinUserInfo.getOpenid());
int errorCode = jsonObject.getInt(&errcode&);
String errorMsg = jsonObject.getString(&errmsg&);
log.error(&获取用户信息失败 errcode:{} errmsg:{}&, errorCode,
errorMsg);
return weixinUserI
* @param code 识别得到用户id必须的一个值
* 得到网页授权凭证和用户id
public static Map&String,Object& oauth2GetOpenid(String code) {
String appid = WxConfig.APPID;//自己的配置appid
String appsecret = WxConfig.APPSECRET;//自己的配置APPSECRET;
String requestUrl = MpApi.GetPageAccessTokenUrl.replace(&APPID&, appid).replace(&SECRET&, appsecret).replace(&CODE&, code);
HttpClient client =
Map&String,Object& result =new HashMap&String,Object&();
client = new DefaultHttpClient();
HttpGet httpget = new HttpGet(requestUrl);
ResponseHandler&String& responseHandler = new BasicResponseHandler();
String response = client.execute(httpget, responseHandler);
JSONObject OpenidJSONO=JSONObject.fromObject(response);
//OpenidJSONO可以得到的内容:access_token expires_in
refresh_token openid scope
String Openid =String.valueOf(OpenidJSONO.get(&openid&));
String AccessToken=String.valueOf(OpenidJSONO.get(&access_token&));
String Scope=String.valueOf(OpenidJSONO.get(&scope&));//用户保存的作用域
String refresh_token=String.valueOf(OpenidJSONO.get(&refresh_token&));
result.put(&Openid&, Openid);
result.put(&AccessToken&, AccessToken);
result.put(&scope&,Scope);
result.put(&refresh_token&, refresh_token);
} catch (Exception e) {
e.printStackTrace();
} finally {
client.getConnectionManager().shutdown();
// 网页授权获取code
public final static String GetPageCode = &https://open./connect/oauth2/authorize?
appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect&;
// 网页授权接口
public final static String GetPageAccessTokenUrl = &https://api./sns/oauth2/access_token?
appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code&;
// 网页授权得到用户基本信息接口
public final static String GetPageUsersUrl = &https://api./sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN&;
上面就是根据code得到openid,现在就是根据openid得到用户信息了
* 类名: WeixinUserInfo &br/&
* 描述: 微信用户的基本信息 &br/&
* 开发人员: zdl &br/&
* 创建时间:
&/br& 发布版本:V1.0 &br/&
public class Userof {
// 用户的标识
private String openId;
// 关注状态(1是关注,0是未关注),未关注时获取不到其余信息
// 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
private String subscribeT
// 用户的性别(1是男性,2是女性,0是未知)
// 用户所在国家
// 用户所在省份
// 用户所在城市
// 用户的语言,简体中文为zh_CN
// 用户头像
private String headImgU
public String getOpenId() {
return openId;
public void setOpenId(String openId) {
this.openId = openId;
public int getSubscribe() {
public void setSubscribe(int subscribe) {
this.subscribe =
public String getSubscribeTime() {
return subscribeT
public void setSubscribeTime(String subscribeTime) {
this.subscribeTime = subscribeT
public String getNickname() {
public void setNickname(String nickname) {
this.nickname =
public int getSex() {
public void setSex(int sex) {
this.sex =
public String getCountry() {
public void setCountry(String country) {
this.country =
public String getProvince() {
public void setProvince(String province) {
this.province =
public String getCity() {
public void setCity(String city) {
this.city =
public String getLanguage() {
public void setLanguage(String language) {
this.language =
public String getHeadImgUrl() {
return headImgU
public void setHeadImgUrl(String headImgUrl) {
this.headImgUrl = headImgU
// 获取用户信息 的url请求
JSONObject jsonObject = HttpUtil.httpsRequest(requestUrl, &GET&, null);
// 获取用户信息 的url请求
import java.io.BufferedR
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.OutputS
import java.net.ConnectE
import java.net.URL;
import javax.net.ssl.HttpsURLC
import javax.net.ssl.SSLC
import javax.net.ssl.SSLSocketF
import javax.net.ssl.TrustM
import net.sf.json.JSONO
import org.apache.http.HttpE
import org.apache.http.HttpR
import org.apache.http.StatusL
import org.apache.http.client.HttpC
import org.apache.http.client.HttpResponseE
import org.apache.http.client.ResponseH
import org.apache.http.client.methods.HttpG
import org.apache.http.client.methods.HttpP
import org.apache.http.entity.StringE
import org.apache.http.impl.client.DefaultHttpC
import org.apache.http.util.EntityU
import org.slf4j.L
import org.slf4j.LoggerF
* 服务器端http请求工具类
public class HttpUtil {
private static Logger log = LoggerFactory.getLogger(HttpUtil.class);
* utf-8编码
static class Utf8ResponseHandler implements ResponseHandler&String& {
public String handleResponse(final HttpResponse response)
throws HttpResponseException, IOException {
final StatusLine statusLine = response.getStatusLine();
final HttpEntity entity = response.getEntity();
if (statusLine.getStatusCode() &= 300) {
EntityUtils.consume(entity);
throw new HttpResponseException(statusLine.getStatusCode(),
statusLine.getReasonPhrase());
return entity == null ? null : EntityUtils
.toString(entity, &UTF-8&);
* 获取用户信息发送 --HTTPS请求
* @param requestUrl
* @param requestMethod
请求方式(GET、POST)
* @param outputStr
提交的数据
* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
public static JSONObject httpsRequest(String requestUrl,
String requestMethod, String outputStr) {
JSONObject jsonObject =
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance(&SSL&, &SunJSSE&);
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(requestUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(ssf);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求方式(GET/POST)
conn.setRequestMethod(requestMethod);
// 当outputStr不为null时向输出流写数据
if (null != outputStr) {
OutputStream outputStream = conn.getOutputStream();
// 注意编码格式
outputStream.write(outputStr.getBytes(&UTF-8&));
outputStream.close();
// 从输入流读取返回内容
InputStream inputStream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream, &utf-8&);
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String str =
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
// 释放资源
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
inputStream =
conn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error(&连接超时:{}&, ce);
} catch (Exception e) {
log.error(&https请求异常:{}&, e);
return jsonO
如果上面有什么问题欢迎大家加入群 0348970。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21844次
排名:千里之外
原创:13篇
评论:15条
(3)(1)(5)(1)(3)(1)(4)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 微信接口获取openid 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信