微信 网页授权,第一次能拿到用户信息,之后都拿不到

报错:
{"errcode":40029,"errmsg":"req id: L3U1QA0347ns40, invalid code"}

授权链接
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx26da4c9ef3b45d22&redirect_uri=http%3A%2F%2Fwx.yulin520.com%2Fa2a%2Fwechat%2Foauth&response_type=code&scope=snsapi_userinfo&state=1agj#wechat_redirect

java代码
public class WeChatUserInfoController {
private Log logger = LogFactory.getLog(WeChatUserInfoController.class);

private String get_access_token_url="https://api.weixin.qq.com/sns/oauth2/access_token?"
        + "appid=APPID"
        + "&secret=SECRET"
        + "&code=CODE&grant_type=authorization_code";

private String get_userinfo="https://api.weixin.qq.com/sns/userinfo?"
        + "access_token=ACCESS_TOKEN"
        + "&openid=OPENID"
        + "&lang=zh_CN";

@RequestMapping(value = "/oauth")
public String oauth(HttpServletRequest request, HttpServletResponse response) {
    logger.info("----- /wechat/oauth: 开始 -----");
    String code = ServletRequestUtils.getStringParameter(request, "code", null);
    String state = ServletRequestUtils.getStringParameter(request, "state", null);
    get_access_token_url = get_access_token_url.replace("APPID", "*****");
    get_access_token_url = get_access_token_url.replace("SECRET", "*****");
    get_access_token_url = get_access_token_url.replace("CODE", code);

    WeChatAccessToken at = getAccessToken(get_access_token_url);

    String access_token = at.getAccess_token();
    String openid = at.getOpenid();

    logger.info("----- code: 开始 -----" + code);
    logger.info("----- access_token: 开始 -----" + access_token);
    logger.info("----- openid: 开始 -----" + openid);
    logger.info("----- openid: 开始 -----" + at.getExpires_in());
    logger.info("----- openid: 开始 -----" + at.getRefresh_token());
    logger.info("----- openid: 开始 -----" + at.getScope());
    logger.info("----- openid: 开始 -----" + at.getUnionid());

    get_userinfo = get_userinfo.replace("ACCESS_TOKEN", access_token);
    get_userinfo = get_userinfo.replace("OPENID", openid);

    WeChatUserInfo ui = getUserInfo(get_userinfo);
    request.setAttribute("userInfo", ui);
    logger.info("----- /wechat/oauth: 结束 -----");
    return "/h5/activity/demo";
}

public WeChatAccessToken getAccessToken(String url){
    WeChatAccessToken at = HttpClientUtil.simpleHttpCallGet(
            url, null, null, 20000
            , new HttpClientCallBack<WeChatAccessToken>() {
                @Override
                public WeChatAccessToken handleResult(ResultBean res)
                        throws IOException {
                    GetMethod getMethod = (GetMethod) res.getValueObject();
                    WeChatAccessToken accessToken = JSON.parseObject(getMethod.getResponseBody(), WeChatAccessToken.class);
                    return accessToken;
                }
            });
    return at;
}

public WeChatUserInfo getUserInfo(String url){
    WeChatUserInfo userInfo = HttpClientUtil.simpleHttpCallGet(
            url, null, null, 20000
            , new HttpClientCallBack<WeChatUserInfo>() {
                @Override
                public WeChatUserInfo handleResult(ResultBean res)
                        throws IOException {
                    GetMethod getMethod = (GetMethod) res.getValueObject();
                    WeChatUserInfo userInfo = JSON.parseObject(getMethod.getResponseBody(), WeChatUserInfo.class);
                    return userInfo;
                }
            });
    return userInfo;
}

1个回答

 首先引导用户去授权页面:
地址:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";
用户同意授权后,页面将跳转至 redirect_uri/?code=CODE&state=STATE
[php] view plaincopy在CODE上查看代码片派生到我的代码片
//通过code换取token  
$code = $_GET['code'];  
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=SECRET&code=$code&grant_type=authorization_code";  
$json = file_get_contents($url);  
$arr = json_decode($json,true);  
$token = $arr['access_token'];  
$openid = $arr['openid'];  
//拿到token后就可以获取用户基本信息了  
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=$token&openid=$openid ";  
$json = file_get_contents($url);//获取微信用户基本信息  
$arr = json_decode($json,true);  
$name = $arr['nickname'];//昵称  
$imgURL = $arr['headimgurl'];//头像地址  
$sex = $arr['sex'];//性别  
$province = $arr['province'];//用户个人资料填写的省份  
$city= $arr['city'];//普通用户个人资料填写的城市  
$country= $arr['country'];//国家,如中国为CN 
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信网页授权和获取微信用户信息
1、需要注册服务号并认证,接口权限开通“网页授权”功能。2、利用微信给出用户授权地址,用户同意授权后,获取code,在通过code换取网页授权access_token,最后拉取用户信息。接口地址微信公众平台开发文档中均有给出。微信授权访问流程:1、建立自定义菜单。2、菜单配置跳转链接(这个链接就是用户同意授权地址,这样用户点击菜单的时候就能提示授权)。3、用户授权同意后获取code信息,微信会回传...
微信网页授权,获取微信用户信息
如果进行第三方网站开发接入微信公众号,需要拿到用户的基本信息,此时就需要调用微信接口进行第三方授权拿到微信用户的基本信息。 **一、微信公众号配置 二、微信菜单配置(或URL访问)(拉取用户授权页面) 三、用户进入授权页面同意授权,获取code,调用微信接口获取access_token 四、微信用户详细信息获取** ...
微信网页授权用户信息——openId相关
名次解释: openid:是 用户微信号∩公众号 的唯一标识符(微信号官方是不提供的)scope:网页授权获取信息的类型分三种, 无需关注:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)无需关注:以snsapi_userinfo为scope发起的网页授权,
微信公众号网页授权获取微信用户信息
有熟悉微信公众号开发的吗?rn关于微信网页授权的时候有点问题rn[img=https://img-bbs.csdn.net/upload/201603/04/1457103665_211521.png][/img]rn官方文档说即使没有关注公众号,只要授权之后,也能获取用户的信息,当然,这样是合理的,关注了公众号之后完全可以根据用户和公众号之间的互动然后通过接口获取用户信息,这个授权也变得没什么意义了。rn[img=https://img-bbs.csdn.net/upload/201603/04/1457103417_829936.png][/img]rn但是我测试了之后发现并不是这样的,因为我没有服务号,更没有认证后的服务号,所以我用的是测试号进行测试。结果是如果我关注了公众号之后,是可以获取用户信息的,但是如果没有关注,那就会出现如图的提醒rn[img=https://img-bbs.csdn.net/upload/201603/04/1457103445_422999.png][/img]rn但是我的确见过其他的网页点击进去之后就跳出授权界面的,而我也没有关注该公众号啊。所以想请问下有没有人知道这是为什么,是不关注就不能跳转到授权界面还是我使用的是测试号的原因,这个问题比较着急,求帮助啊,谢谢啦!rn
OAuth2.0网页授权拉取微信用户信息
&lt;?php //微信签名开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3 class wxPay { const KEY = 'KEY'; const CODEURL = 'https://open.weixin.qq.com/connect/o...
10微信网页授权_拉取用户信息
课程特点:rn1.与时俱进,最新版公众号教程rn2.简单、高效。降低学习者的学习成本。rn3.提供课件+源程序+笔记rn4.使用最新官方文档讲解
Qrcode生成二维码链接地址,网页授权获取微信用户信息
(1)一个简单的二维码地址生成使用easywechat扫描获取微信用户的信息:首先生成二维码链接这里引用的QrCode生成的QrCode::size(300)->generate($url]); url为扫描二维码所跳转的地址(2)当用户扫描二维码跳转至后台处理方法,我这里这样引用public function getWxUserOpenid(Request $request) {
调用微信OAuth2.0网页授权接口实现用户信息的绑定
在微信网页开发中,可以通过OAuth2.0网页授权机制,来获取用户基本信息,进而实现自己的业务逻辑。 微信官方文档 关于网页授权回调域名的说明 1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 ht
微信公众号开发教程(六)获取微信用户信息-网页授权
作者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。在学习网页授权之前,我们先来了解下这次的需求:我们的应用中有一个用来显示个人信息的页面,当微信用户在微信app中打开这个页面,希望可以获取到该用户的头像,昵称等信息,并显示到该页面中。如下图所示:如果用户在微信客户端中访问第三方网页(我们的应用),可以通过微信网页授权机制,来获取用户的基本信息(包括昵称、性别、城市、国家等,注意:手机,QQ...
js实现微信授权并拿到用户信息
js实现微信授权并拿到用户信息,修改index.html 里面的appid,跟notify.html里面的appid,secret为你自己的就OK了.已测试成功.
微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
一、微信网页授权获取用户openid以及用户信息的步骤 开发文档 http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html#.E7.AC.AC.E4.B8.80.E6.AD.A5.EF.BC.9A.E7.94.A8.E6.88.B7.E5.90.8C.E6.84.8F.E6.8E.88.E6.9D.83.EF.B
微信网页授权
从获取code到获取openid,使用的是java语言spring框架
微信网页授权
重新整理做过的功能,以及过程遇到问题,温故而知新 官方文档 一 准备工作 (a.接入 b.配置) a) 修改/添加 业务域名、网页授权域名; 授权回调域名 不加 http:// 协议头 绑定时微信要求将 *.txt文件上传根目录,需要将文件 添加到我项目.htaccess许可中 确保文件可被访问,否则绑定不通过 b) 公众平台 参数 a...
微信的网页授权
1、首先,打开微信的开发者文档,https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;amp;id=mp1445241432,点击“微信网页开发”==》“微信网页授权”,在这里拉下看,主要有4个步骤,可能你会有点懵逼,这些是干什么用的,不过没关系,照着做就对了,微信可不会骗人,在你需要登录授权就是填这个链接就可以了,要不要显示这个页面主要看你scope...
微信-----公众号>微信网页授权
微信网页授权获取用户openid以及用户信息demo下载
包含两个东西,1是实现文档,2是实现demo。 这是java版的,实现原理,通过JS请求自定义controller方法来获取微信用户信息的。
微信公众号开发002-微信网页授权
1.首先在开发前阅读微信提供的API文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;amp;id=mp1421140842)阅读完的我们就知道在获取用户授权信息的时候需要设置回调域名:(1)、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置...
微信网页授权与微信H5支付
                 微信网页授权与微信H5支付 一、微信网页授权    用户在点公众号里的链接时,让用户授权,并以此得到用户的更多信息    完整的介绍见:    https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;amp;id=mp1421140842,    我这里只做一个流程说明。1.  引导用户打开点击一个链接    格式如下:...
微信获取openid和网页授权
获取openid  1.引入依赖weixin-java-mp 2.构造网页授权  @GetMapping(&quot;/authorize&quot;)     public String authorize(@RequestParam(&quot;returnUrl&quot;) String returnUrl) {         //1. 配置WxMpService         //2. 调用方法         Strin...
H5微信网页授权
一.网页开发时的微信授权,首先公司要开通一个公众号,然后需要配置相关的东西: 1.微信网页授权:用于获取用户针对于公众号的唯一标识openid。但只能添加一个域名,通常把它设置为一级域名。网页授权回调域名,首先,在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里...
微信公众号开发Django-网页授权
原文链接 对于基础的微信公众号开发,网页授权,JSSDK,图片处理应该是最重要的三部分了根本上也是按照文档开发,技术含量并不高。 (选Django=很多权限控制模块已经做好了,比较省力) 在开始之前极力推荐内网穿透的各种工具,可以实时调试公众号推荐自己搭建,可以自定义域名,传输也放心https://github.com/inconshre...
微信网页授权问题
第一次静默授权能正常获取code,从而获取用户信息,但是如果在本页面刷新页面之后,code未发生变化,还是第一次的code,之后就获取信息失败,怎么做才能保存用户的授权,不再多次授权
微信网页授权并获取用户信息
微信网页授权并获取用户信息 介绍 在很多微信H5应用里,当用户访问第三方应用时就需要进行微信网页授权,并且很多涉及安全的操作我们必须要先获取用户信息才能继续,本文章简单介绍了微信授权流程,并通过申请微信测试账号来模拟网页授权,用户在授权页点击确定登录后获取用户信息并显示在前端页面,最后效果如下图 工具及开发准备 1. 微信开发者工具及微...
微信自定义菜单与网页授权结合
用Java开发,微信自定义菜单的URL例如即进入网页授权  网页静默授权  可以获取用户信息 ,此处可以根据点击的菜单进入相应的菜单界面,在界面中涉及到JS-SDK的使用,步骤:生成JSSDK签名步骤 1、先获取token 2、获取tickets 3、加密 4、获取签名 前端网页JS-SDK调用页面如果出现config:fail,invalid signature错误提示,注意url参数或是加密算...
微信网页授权获取
实现微信用户网页授权获取基本信息资料
微信OAuth2.0网页授权接口
微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本,主要实现了oauth网页受权,以及部分其他接口。 使用方法 为什么用OAuth2.0受权? 通过OAuth2.0受权的网页将会获取到打开者的微信信息,甚至包括微信昵称、头像等有用的数据,开发者们可以凭此设计出更多更丰富的页面应用,比如最近一直很火爆的红包类活动。除此之外还有个额外的好处,就是可以控制页面在非微信浏览器中无法打开,可以减少代码被人窥窃的风险。 那么红包类活动是如何使用OAuth2.0受权接口的呢? 1.首先用户打开页面连接(php页面),php接收到请求后将页面跳转到微信的OAuth2.0受权页面,在获取到受权后再次将页面跳转回php服务器;此次跳转中带有用户的各种信息,php服务器记录后返回用户所看到的页面。 2.然后用户转发此页面,在转发的连接中带有自己的标识参数。当好友点击分享后的连接的时候也会重复第1步的步骤,当php服务器发现从微信OAuth2.0受权返回的数据中的用户数据与标识参数对应的分享者的用户数据不一致的时候,则可以判断出有好友打开了分享页面,给用户增加一个红包。 使用方法 AuthAction.class.php ---- 认证基类 IndexAction.class.php --- 测试类 index/Conf/config.php --- 设置 wx_appID 微信公众账号的appid wx_appsecret 微信公众账号的appsecret weixin_token 微信公众账号接口配置信息的Token wx_webauth_callback_url OAuth2.0授权后跳转到的默认页面 wx_webauth_expire OAuth2.0授权Token过期时间默认6500 配置好config.php后在微信公号后台设置index.php/Index/wechatInitAuth进行微信API认证,提示"配置成功"后方可使用。 测试公众号申请与具体的测试步骤见下方。 测试 IndexAction.class.php --- 测试类 申请微信测试公众帐号 微信提供测试用的公众账号,此帐号只能添加100个关注者且只有已关注的用户才可以进行OAuth2.0受权。 点此开通测试帐号 1.开通后将appID、appsecret、Token填入index/Conf/config.php中。然后将接口配置信息中的URL改至php服务器,将地址定位到index.php/Index/wechatInitAuth进行微信API认证,直到提示"配置成功"。 2.点击‘体验接口权限表--OAuth2.0网页授权(仅关注者才能授权)’中的修改,将授权回调页面域名改为php服务器地址。直到出现‘通过安全监测’。 配置完微信测试号后,在微信中打开http://项目目录/index.php(例:http://121.40.135.90/weixin_auth/index.php)将会在页面中打印出session中的受权数据,表示测试受权成功。 代码结构 在AuthAction中的初始化函数_initialize中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。 对于同一用户在受权过期时间内多次打开此控制器的页面,将不会进行多次受权,因为其受权信息记录在session中,以免重复受权,减慢访问速度。受权过期时间在index/Conf/config.php中wx_webauth_expire设置,建议不要大于微信的过期时间7200秒。 注意: 微信OAuth2.0受权分为snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息),AuthAction.class.php默认为snsapi_base,而且session中只记录了snsapi_base中的基础数据,如需要snsapi_userinfo请自行修改。 具体的实现方法见代码注释。
PHP 微信网页授权开发
现在有大量的app分享 、点进去看视频都微信授权登录这一说,不过今天抽空把微信授权做了一下,也耗了点时间、授权回调页面域名 这个地方刚开始做的时候也没有显示正确、redirect_url  参数错误,也就是你访问你项目的地址、大家一定不要填错了 第一步:百度搜索 微信公众平台 --> 登录、进去完之后、往下拉看到微信开发者工具-》公众平台测试账号。
介绍微信网页授权
<p>n 通过热门框架spring boot来学习微信公众号开发,帮助同学们快速入门微信公众号开发。n</p>n<div>n <br /></div>
8微信网页授权_换取网页授权access_token
课程特点:rn1.与时俱进,最新版公众号教程rn2.简单、高效。降低学习者的学习成本。rn3.提供课件+源程序+笔记rn4.使用最新官方文档讲解
PHP微信网页授权登录
PHP微信网页授权登录; PHP微信网页授权登录; PHP微信网页授权登录
微信网页授权获取用户信息失败
通过OAuth实现自定义View菜单的网页授权跳转,跳转页面为GetUserInfoByOAuth.aspx,使用公众号为微信公众平台提供的测试号。rnGetUserInfoByOAuth部分代码如下:rnWeChatUserInfo userInfo = WeChatAuthorize.GetUserInfoByOAuth(out errorMessage);rnif (userInfo != null)rn rn Response.Write("OpenId->" + userInfo.openid + " Nickname->" + userInfo.nickname);rn rnelsern rn Response.Write("OMG,未获取到用户信息~" + errorMessage.errmsg);rn rnrn微信测试号自定义菜单View的url为:string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=0&redirect_uri=1&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect",appId,redirectUrl);rn问题出来了,rn问题一:点击菜单项,scope是snsapi_userinfo,却没有授权跳转提示,听说测试号只能是关注的用户才能实现网页授权跳转,但是无授权提示是怎么回事?又不是snsapi_base。rn问题二:跳转虽然无提示,却成功跳转,页面上却只有OpenId-> Nickname->,没有实际的openid和nickname的值。能够输出OpenId->表示userInfo不为空,但是怎么实际的值却无法显示出来呢?rn问题三:写了一个StreamWriter writer = new StreamWriter(HttpContext.Current.Server.MapPath(".") + "\\Log.md", true);rn writer.WriteLine(userInfo.openid); 运行之后服务器上的Log.md没有任何内容。rn一次问了三个问题,求各位大侠大神不吝赐教!
vue微信网页授权
vue微信授权登陆
微信网页授权业务逻辑
微信网页授权官方文档 第一步:用户同意授权,获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&amp;r...
wechat-0040,微信公众号,微信网页授权
demo:https://github.com/wenrongyao/wechat-demo 摘要:用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 网页授权流程分为四步: 01、引导用户进入授权页面同意授权,获取code 02、通过code换取网页授权access_token(与基础支持中的access_token不同) 03、如...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池