获取用户信息,需要获取 access_tokenopenid

然后调用接口https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

access_token:公众号的全局唯一票据,

获取access_token,需要调用https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数 是否必须 说明
grant_type 获取access_token填写client_credential
appid 第三方用户唯一凭证
secret 第三方用户唯一凭证密钥,即appsecret

openid:普通用户的标识,对当前公众号唯一

获取openid需要先获取code,

获取code需要调用接口

https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=现在访问的方法的url&response_type=code&scope=snsapi_userinfo&state=STATE

获取code后,

再调用接口https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code以获取openid

具体代码

def get_user_id(self,code):
"""
获取code
openid
:return:
"""
#getwx() 方法获取appid
wxinfo = self.getwx()
#获取正在访问的模块的路径(手机上的)
urls="{}://{}{}".format(self.request.protocol,self.request.host,self.request.uri)
#获取code
if code == 'mistake': codeurl='https://open.weixin.qq.com/connect/oauth2/authorize?appid='+wxinfo['appid']+'&redirect_uri={}&response_type=code&scope=snsapi_userinfo&state=STATE'.format(urls)
self.redirect(codeurl)
else:
#如果存在code 则调用weixin()函数,获取openid
openid=self.weixin(code)
return openid
def getwx(self):
"""
#获取appid和secret
:return:
"""
db_wx = self.db.query(Wx)
db_wx = db_wx.first()
return {'appid':db_wx.appid,'secret':db_wx.secret} def weixin(self,code):
"""
获取openid :普通用户的标识,对当前公众号唯一
:return:
"""
#getwx() 方法获取appid和secret
wxinfo = self.getwx()
opidurl="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+wxinfo['appid']+"&secret="+wxinfo['secret']+"&code="+code+"&grant_type=authorization_code"
#先使用opreq = urllib2.Request(opidurl)实例化一个resquest对象,
opreq = urllib2.Request(opidurl)
#接下来使用urllib2.urlopen(opreq)来打开这个网页
opreq_data = urllib2.urlopen(opreq)
#read() 不带参数的read是将文件所有内容读入到 一个字符串中
opres = opreq_data.read()
opres=json_decode(opres)
openid= opres['openid']
return openid def accesstokens(self):
"""
获取 token
token:access_token是公众号的全局唯一票据
:return:
"""
token = self.redis.get("wx_token")
if not token:
#getwx() 方法获取appid和secret
wxinfo = self.getwx()
url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+wxinfo['appid']+"&secret="+wxinfo['secret']+""
req = urllib2.Request(url)
res_data = urllib2.urlopen(req)
res = res_data.read()
res=json_decode(res)
token=str(res['access_token'])
self.redis.set("wx_token",token,ex=3600) return token

微信——获取用户基本信息及openid 、access_token、code的更多相关文章

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

    获取用户的信息的原理,首先用户会点击一个url,这个url会包含一个参数redirect_uri,这个url是指向微信那边的服务器的,然后微信会把这个http请求重定向到redirect_uri,即我 ...

  2. 微信扫码登录(3)---授权码code获取用户基本信息

    授权码code获取用户基本信息 上一遍已经获得微信回调的code,网址:回调获取code     那这篇通过code和其它参数去获得用户基本信息. 1.UserServiceImpl关键代码 @Ove ...

  3. C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...

  4. C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)

    咨询 请加 QQ::QQ群: 在微信里面,非认证的公众号账号,只能通过在微信回复菜单单击等事件获取openid,但是认证的公众账号(之前认证的订阅号是不可以的,现在新开放了政府媒体机构的认证订阅号)可 ...

  5. 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)

    本文将介绍基于Senparc.Weixin微信开发框架来实现网页授权来获取用户基本信息.先生成包含授权及回调url信息的二维码:用户用微信扫描之后,被要求授权以获取Ta的用户基本信息:用户授权后,通过 ...

  6. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  7. ***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权

    本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息, ...

  8. 夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

    如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑. 一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可 ...

  9. 微信网页授权获取用户基本信息--PHP

    现在就说说怎么通过网页授权获取用户基本信息(国家,省,市,昵称)等. 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用 ...

随机推荐

  1. 使用ndk编译c可执行程序

    1.创建工程目录  在ubuntu系统下搭建好ndk编译环境,创建test目录 mkdir test 在test目录下创建jni目录 cd test mkdir jni 2.编写源代码 vim hel ...

  2. .NET WEB项目的调试发布相关

    最近接触了.NET WEB项目,调试的时候因为没配置好文件浪费了些时间,特此记录一下相关配置,以后备用 如果IIS的基目录指向了别处,在build以后必须要发布,其实就是把最新的程序更新到IIS的基目 ...

  3. hosts 屏蔽百度

    127.0.0.1 localhost  cpro.baidu.com vie.baidu.com  cpro.baidu.com  ubmcmm.baidustatic.com  uumcmm.ba ...

  4. JSON 的标准:双引号而非单引号!

    刚刚测试发现一段很简单的.看似正确的代码却是错误的: <?php $json_str = "{'name':'Eric', 'age':23}"; var_dump(json ...

  5. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  6. adb connect 出现timeout的处理方式

    默认的timeout是5000ms毫秒,如果是断点调试的时候,经常会出现timeout, 所以修改这个值就不会出现timeout了, Eclipse下的设置位置: Window->Prefere ...

  7. ABAP READ TABLE语句注意

    READ TABLE 后注意判断 sy-subrc 是否等于0

  8. 限制textarea的字数(包括复制粘贴)

    <textarea cols="100%" rows="10" id="tuconent" placeholder="评价( ...

  9. jQuery简单倒计时插件

    一. 效果预览 二. 实现 1. 按照特定的类结构布局. 2. 需要先引入jQuery,再引入此文件. /** * Author: CC11001100 * * 简单倒计时 * * 1. 支持页面内同 ...

  10. Arduino uno 引脚说明

    http://openhome.cc/Gossip/Books/mBlockArduino1-3and1-4.html http://swf.com.tw/?p=406