微信获取用户的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.本人比较喜 ...
随机推荐
- [Effective C++ --018]让接口容易被正确使用,不易被误用
□第一节 什么是接口?什么是接口?百度百科的解释:两个不同系统(或子程序)交接并通过它彼此作用的部分.接口的概念贯穿于整个软件开发过程中,本文讨论的接口概念仅局限于以C++实现的class,funct ...
- [001]socket通信--server和client实现迭代的简单例子
server端: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unist ...
- iOS简单加载一个网页
.h文件中 @property(strong ,nonitomic) UIWebView * webView; .m文件中 -(void)viewDidLoad { self.webview = [[ ...
- Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)
使用Http的Post方式与网络交互通信.Post方式需要向网络传输一部分数据,同时具有输入流和输出流. 详见:Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例 ...
- Activity的启动模式及回退栈的概念
Activity的启动模式 standard 正常模式 在创建一个新的activity的时候,直接在栈顶创建一个新的activity singleTop 顶部单个 在创建一个新的activity的时候 ...
- [转]Best way to sort a DropDownList in MVC3 / Razor using helper method
本文转自:http://stackoverflow.com/questions/7223185/best-way-to-sort-a-dropdownlist-in-mvc3-razor-using- ...
- 汇总文件数据 VBA
1 读取30个文件的数据信息 2 根据4个key值,判断累计数据 3 做sum , avg Sub 月汇总() Dim MyPath, MyName, AWbName Dim Wb As Workbo ...
- Jquery inArray的使用
var typeList=["A","B","C","D"]; if ($.inArray("A", ...
- iOS获取webview高度
int webHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scr ...
- JavaScript学习笔记(9)——JavaScript语法之流程控制
javascript的流程控制语句与大部分类c语言一致.大致如下: 一.if if...else if...else if....else if....else..... 二.switch(变量){ ...