微信获取用户的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.本人比较喜 ...
随机推荐
- VM11安装Mac OS X 10.10
工具/原料 1. VMware Workstation 11.12 2. unlocker 206(for OS X 插件补丁) 3. Mac OS X 10.10镜像 方法/步骤 有图有真相,哈 ...
- REM 注释
REM 是DOS批处理和VB的注释语句.所谓注释语句,就是程序的执行时会跳过该行(不管它后面写的什么),它为编程者起到一个批注的功能,以达到好的可读性以便于交流以及起到备忘作用. 在批处理命令中如果不 ...
- C#_Ajax分页MVCPager
UCJqOrderList @model PagedList<Order> <div id="dvOrders"> <table width=&quo ...
- java_spring_实例化bean的3种方法
//Dao类 package com.dao.bean.www; public interface PersonServiceDao { public abstract void save(); } ...
- 一个小例子讲讲jsonp
1.何为jsonp(json with padding) json我们都知道并用过.那么jsonp呢,呃,好像听过,但没用过.很久以来楼主也只是听过这个名词而已.直到今晚楼主看到一篇文章(http:/ ...
- nginx自定义模块编写-实时统计模块--转载
原文:http://www.vimer.cn/2012/05/nginx%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E7%BC%96%E5%86%99- ...
- fstat - 读取文件相关信息
#fstat读取到的信息 ["dev"]=> int(16777220) ["ino"]=> int(66880002) ["mode&q ...
- posix thread线程
1. pthread线程通过调用你提供的某些函数开始.这个“线程函数”应该只有一个void*型参数,并返回系统的类型.2. 通过向pthread_create函数传递线程函数的地址和线程函数调用的参数 ...
- 在Activiti官方源码上提交的两个bugfix
前段时间在Activiti官方源码上提交了两个bugfix,截图为证. 第1个是BPMN model输出的bug:
- Filezilla FTP Server 设置帐号主目录文件夹的方法和多个帐号共享一个文件夹的方法
1.点击用户头像进入 2.共享文件夹 3.添加共享文件夹 4.设置一个主目录 5.右键主目录 如图6设置别名,别名问主目录路径+别名名称 如:主目录[d:\pro\home\] 别名[aliases1 ...