小程序获取openid,后台服务器端为C#

spring1990 2018-02-07 11:08:29
微信小程序获取用户唯一标识openid代码,官方文档关键点一笔带过,网上找了半天基本都是按照官网文档写的攻略,用处不大。现在整理一份详细的文档,供小程序初学者学习。
第一步:首先是小程序端,代码比较简单,但是关键点却不容易发现。app.js里,调用wx.login(),获取code,然后调用wx.request,一定看好,url不是官方网站提供的“https://api.weixin.qq.com/sns/jscode2session”,这个地址小程序是没法直接访问的,必须有后台的支持,就是你需要编写一个后台程序,通过后台代码来访问官方提供的网址,此处的url指向的就是你调用官方接口的后台代码,调用成功后,底部显示了openid


第二步,小程序的url指向的接口地址代码,是我自己编写的后台程序,这里注意,官方接口有4个参数,这四个参数可以由小程序端传值,也可以自己后台复制,看自己需要。这4个参数分别是appid和secret(登录官方后台自己账号获取)、js_code,就是小程序端传过来的code值,还有grant_type直接写上authorization_code,即可。
我这里是C#代码,用get方式访问接口获取数据,然后以json格式返回给小程序端


除了openid之外,还有获取用户简单信息的方法,getuserinfo,这里代码和官网一致,https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html#wxgetuserinfoobject,认真仔细阅读

getUserInfo: function (cb) {
var that = this
if (this.globalData.userInfo) {
typeof cb == "function" && cb(this.globalData.userInfo)
} else {
//调用登录接口
wx.login({
success: function (res) {
var code = res.code
if (res.code) {
//获取用户基本信息
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userInfo
that.globalData.rawData = res.rawData
that.globalData.signature = res.signature
that.globalData.encryptedData = res.encryptedData
that.globalData.iv = res.iv
typeof cb == "function" && cb(that.globalData.userInfo)
}
})
}

}
})
}
},
globalData: {
userInfo: null,
rawData: null,
signature: null,
encryptedData: null,
iv: null,
}


代码文档地址:提供了小程序端和C#后台代码,比较完整http://download.csdn.net/download/springpp1990/10244829
...全文
3478 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
q113380947 2020-03-17
  • 打赏
  • 举报
回复
这个坟挖的,哎!现在世道变啦!小程序是不允许这样后台登录了,必须开放用户体验,让用户自己主动登录才可以。
szjarvis 2020-03-13
  • 打赏
  • 举报
回复
楼主写的逻辑非常清楚,终于知道怎么通过微信登陆注册用户了。 有两点不明白,一是通过小程序登陆后得到的code(每次会变),来取openId,这个openId是每个微信用户的永久唯一标识吗? 二是如何获得微信用户的妮称和电话呢?
kingsjava 2020-02-27
  • 打赏
  • 举报
回复
C#端: [HttpGet] public string login(string code) vs怎么新建这个文件?请步骤下,谢谢!
95lucky 2020-01-07
  • 打赏
  • 举报
回复
魏本全软件开发/ASP.NET Bbs1,把获得的opentid写入到数据库应该怎么写?
95lucky 2020-01-07
  • 打赏
  • 举报
回复
如何把得到的openId写入数据库?
lxw99 2019-01-31
  • 打赏
  • 举报
回复
楼上把appid secret都写出来了真豪放
  • 打赏
  • 举报
回复
感谢,很不错的c#,可以实现!楼主的代码有点小瑕疵,我改进了一点 小程序端: onLoad: function() { wx.login({ success(res) { if (res.code) { console.log("用户登陆凭证" + res.code); wx.request({ url: 'http://localhost:59132/api/user', data: { code: res.code, }, success(res) { console.log("获取openid" + res.data); } }) } } }) C#端: [HttpGet] public string login(string code) { string js_code = code.ToString(); string serviceAddress = "https://api.weixin.qq.com/sns/jscode2session?appid=wx361987b5ef220c26&secret=be34f824aaaf286979111d61ad7e3e64&js_code=" + js_code + "&grant_type=authorization_code"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; }
玛格尔 2018-04-23
  • 打赏
  • 举报
回复
下载后,修改自己的相关ID能否直接用?
dotnba 2018-02-24
  • 打赏
  • 举报
回复
一开始的确有点懵,但总体还算是简单

3,156

社区成员

发帖
与我相关
我的任务
社区描述
微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,通过二次开发可以将公众账号由一个媒体型营销工具转化成提供服务的产品。
社区管理员
  • 微信开发
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧