微信获取用户的openid和详细信息

获取用户的信息的原理,首先用户会点击一个url,这个url会包含一个参数redirect_uri,这个url是指向微信那边的服务器的,然后微信会把这个http请求重定向到redirect_uri,即我们的后端,而且会附带一个code参数,如果我们需要获取用户的基础信息(也就是openid)就需要用这个code去访问微信的指定url来请求用户的openid,如果我们需要获取用户的详细信息(微信名称,头像),我们就需要先用code获取一个access_token,再用这个access_token来获取用户的信息
获取用户点击的那个url的方法:
#encoding=utf-8
__author__ = 'kevinlu1010@qq.com' def get_redirect_url(uri, is_info=0):
'''
获取url,改url可以访问微信的网址,然后会重定向回来我们的网址,而且附带访问的微信用户的信息
uri 需要跳转到的uri 如/cherrs
is_info 是否获取详细信息,如果为1,就获取用户的详细信息,包括名字,图片,否则就获取基本信息,只有open_id
返回 url
'''
pre_url = 'http://xxxx.xxxxx.com'
appid = 'wxxxxxxxxxxxxxxxxxeb'
scope = 'snsapi_userinfo' if is_info else 'snsapi_base'
data = {'redirect_uri': pre_url + uri,
'appid': appid,
'response_type': 'code',
'scope': scope,
'state': ''} urlencode = urllib.urlencode(data)
wei_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' + urlencode + '#wechat_redirect' return wei_url
通过code获取用户open_id
def get_base_info(code):
'''
通过获取的code,访问微信的api,获取用户基本信息(只有openid)
return 用户的open id
'''
if not code: return ''
url = 'https://api.weixin.qq.com/sns/oauth2/access_token'
try:
data = {'appid': const.appid, 'secret': const.secret, 'code': code, 'grant_type': 'authorization_code'}
post_body = urllib.urlencode(data)
f = urllib2.urlopen(url, post_body).read()
r = ast.literal_eval(f) #字符串转换成字典
return r['openid']
except:
return ''
通过code获取用户详细信息:
def get_detail_info(code):
'''
获取用户的详细信息
return dict {'userID':'','nickname':''m',headimgurl':''}
'''
ret = {}
url = 'https://api.weixin.qq.com/sns/oauth2/access_token'
try:
data = {'appid': const.appid, 'secret': const.secret, 'code': code, 'grant_type': 'authorization_code'}
post_body = urllib.urlencode(data)
f = urllib2.urlopen(url, post_body).read()
r = ast.literal_eval(f) #字符串转换成字典 #获取用户详细信息
access_token = r['access_token']
ret['userID'] = r['openid']
url = 'https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN' % (
access_token, ret['userID'])
f = urllib2.urlopen(url).read()
r = ast.literal_eval(f) #字符串转换成字典
ret['nickname'] = urllib.unquote(r['nickname'])
ret['headimgurl'] = urllib.unquote(r['headimgurl'])
except urllib2.URLError, e:
return ret
return ret
微信获取用户的openid和详细信息的更多相关文章
- 微信公众平台如何获取用户的OpenID(一)
如何获取用户的OpenID,对于微信开发模式下的开发来说,那就是一个非常简单的小功能了.简单介绍一下我是怎样去获取OpenID的. 微信服务器与公众账号服务器交互的信息可以分为3类:请求消息.事件和响 ...
- 微信小程序案例:获取微信访问用户的openid
在微信开发项目中,获取openid是项目常遇的问题,本文通过主要讲解实现在微信小程序中如何获取用户的openid,案例实现非常简单 具体实现方法是通过登录接口获取登录凭证,然后通过request请求微 ...
- asp.net core 微信获取用户openid
获取openid流程为首先根据微信开发参数构造AuthorizeUrl认证链接,用户跳转到该链接进行授权,授权完成将跳转到回调页(首次认证需要授权,后面将直接再跳转至回调页),此时回调页中带上一个GE ...
- python3获取指定目录内容的详细信息
不同平台获取指定目录内容的详细信息命令各不相同: Linux中可以通过ls -al获取获取 windows中可以通过dir命令获取 下面是我写的一个通用获取目录内容详细信息的python3脚本: #! ...
- PHP利用微信跳转的Code参数获取用户的openid
//获取微信登录用户信息function getOpenID($appid,$appsecret,$code){ $url="https://api.weixin.qq.com/sns/ ...
- 微信获取用户信息的两个接口和两个ACCESS_TOKEN
有一段时间没有搞微信开发了 ,今天突然要改一下程序! 回头一看 微信的帮助文档太tm的稀烂的,太难懂了,这做个笔记以后看着方便 微信有2个ACCESS_TOKEN, 1,基础接口的token 获取接口 ...
- SoringCloud(四) - 微信获取用户信息
1.项目介绍 2.微信公众平台 和 微信开放文档 2.1 微信公众平台 2.1.1 网址链接 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?ac ...
- 微信——获取用户基本信息及openid 、access_token、code
获取用户信息,需要获取 access_token.openid 然后调用接口https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCES ...
- 微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
在这里给大家分享下我的心得,1.写代码前一定要对整个流程有个了解.我就是因为在先不了解整个过程中去ctrl+c+v他人的博客代码,花费很多无用的时间去处理还不知道能不能跑的起来的代码. 2.本人比较喜 ...
随机推荐
- MySQL如何选择float, double, decimal
http://yongxiong.leanote.com/post/mysql_float_double_decimal
- [Effective C++ --018]让接口容易被正确使用,不易被误用
□第一节 什么是接口?什么是接口?百度百科的解释:两个不同系统(或子程序)交接并通过它彼此作用的部分.接口的概念贯穿于整个软件开发过程中,本文讨论的接口概念仅局限于以C++实现的class,funct ...
- vb.net中常用键值
可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbKeyLButton 0x1 鼠标左键 vbKeyRButton 0x2 鼠标右键 vbKeyCancel 0x3 CANCEL 键 v ...
- php笔记02:整型细节说明
1.php的一个整数可以是十进制,也可以是八进制和十六进制: 比如:$a=0123; //八进制 $a=0x1A; //十六进制 2.php的整数都是有符号的数(java也是只有有符号数) 3.在ph ...
- 模仿京东顶部搜索条效果制作的一个小demo
最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...
- 利用dijkstra算法规划线路
# dijkstra# 1.在数据库内预先存放了北京市内最新的道路节点,选用优化了得dijkstra算法进行线路规划. 当输入起点和终点后,会计算出最短的路径.同时还能选择查看路径经过的道路节点 ...
- 浅谈用java解析xml文档(二)
上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...
- 关于post请求参数的大小限制的说明
最近做一个上传图片的项目,前端使用jquery 的post提交,然后把上传的图片的base64码 传到后台,发现几KB或者几十KB的图片,都可以传到后台,但是在上传几M 的图片在后台接收的时候,发现传 ...
- nopCommerce的配置以及汉化
这里给大家一些链接,是关于nopCommerce的一些介绍: nopCommerce的源代码 关于nopcommerce Nopcommerce中文资源 第一步 配置nopCommerce 先上一张 ...
- 批量转换word文档到pdf文件
最近在整理每周的工作记录.因为每周的工作记录大都是单独的word文件,有时候忘记了也不容易找出来,一个个打开查找太费劲,因此想着把这些文件通过word2016的另存为功能转换为pdf,然后永Acrob ...