关于微信获取用户信息,需要用到两个token

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35510729/article/details/89915417

微信开发的官方文档实在是坑的雅痞,我是在查阅了许多博客之后才弄清楚,获取用户信息的token不是和openid通知书返回的按个,在这里整理一下
官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

首先第一步:用户同意授权,获取code
这一步不多赘述,主要讲后面的两个token问题.
请求格式为 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
里面的参数用真是参数代替即可,请求返回的参数为code

第二步 获取用户的openid和token
请求格式:https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code
参数为第一步请求会的的参数code,appid(公众号唯一标识)和secret(公众号的appsecret),请求成功之后会返回用户的access_token和openid,这里出现的access_token就是第一个token,我们为了区别记为token1.

第三步 获取用户第二个token
这一步之前需要先设置微信公众号和微信商户的调用地址和ip白名单,具体设置方法可百度一下
请求格式:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret
这里的参数appid和secret与第二部相同,请求成功后返回了access_token值,这里的token记为token2.

第三步 获取用户信息
请求格式:https://api.weixin.qq.com/cgi-bin/user/info?access_token=token2&openid=openId&lang=zh_CN'
这里请求的时候参数access_token值就是第三步获取到的token2,加上第二步获取到的openid就OK
这样就能正确的获取到用户信息了

展开阅读全文

关于微信授权获取用户信息的问题

01-29

如题,微信接口获取步骤 一、通过code换取网页授权access_token 如下方法rn[code=csharp]rnstring url = GetAccessTokenUrl(appid, secret, code);rn var data = client.DownloadString(url);rn var obj = JsonConvert.DeserializeObject>(data);rn[/code]rn可以获得obj 对象 的 access_token(授权token) 和 openid(用户openid)rn在通过这两个参数获取头像和昵称后报错rn[code=csharp]rn var openid = obj["openid"];rnstring userinfo_access_token = obj["access_token"];rnstring url_userinfo = string.Format(userinfo_url, userinfo_access_token, openid);rn[/code]rn得到的 url_userinfo 信息是rnerrcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest, hints: [ req_id: k1Bira0081s155 ]rn上网查了一下。说 授权access_token不是最新的。但是我明明刚获取的啊。即使不是最新的,那好吧,我调用刷新access_token方法再获取用户信息总可以了吧。rn[code=csharp]rnvar refresh_token = string.Format(Commons.weixin_get_authorize_refresh_token_url, Commons.weixin_get_appid, Convert.ToString(obj["refresh_token"]));rn var refresh_token_data = client.DownloadString(refresh_token);rn var obj_refresh_token = JsonConvert.DeserializeObject>(refresh_token_data);rn var url_userinfo_1 = string.Format(Commons.weixin_get_authorize_userinfo_url, obj_refresh_token["access_token"].ToString(), openid);rn var data_userinfo_1 = client.DownloadString(url_userinfo_1);rn var obj_userinfo = JsonConvert.DeserializeObject>(data_userinfo_1);rn[/code]rn经调试。发现还是报40001 错误。不知道什么原因。请大神帮忙分析一下。rn 论坛

微信网页授权获取用户信息失败

03-10

通过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一次问了三个问题,求各位大侠大神不吝赐教! 论坛

没有更多推荐了,返回首页