小程序学习:C#服务端获取小程序openid并返回数据给小程序前端

魏本全 2018-11-14 01:38:57
最近在做小程序开发,小程序关于API请求访问难点之一:微信小程序获取用户唯一标识openid,官方文档实在是讲的不详细,初学者用处不大。把自己实际做项目的源码共享与大家,供小程序初学者学习。
第一步:小程序端代码比较简单:调用wx.login(),获取临时登陆凭证的code值(每次请求都是随机值),
第二步:调用wx.request,重点:url值不是他人案例上的链接,这是你自己编写后台C#程序封装的API路径(本地预览是localhost之类的),通过后台C#程序再来访问官方提供的网址(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code),

第三步:把C#程序访问网址的结果返回给小程序就好了
具体代码:
小程序端:
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);
}
})
}
}
})

代码解析:wx.login官网有详细解说,固定格式固定语法,直接照搬。注:我这边是url路径就是Visual Studio本地预览的网址,也就是该C#源码的路径,不懂的可以看C# MVC的API创建与访问
C#程序端:
[HttpGet]
public string login(string code)
{
string js_code = code.ToString();
string serviceAddress = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&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;
}

代码解析:这里的代码也是固定语法格式直接照搬。可以看出这段代码是返回一个叫retString的值,这个值里包含openid等信息。
这个代码开始传入一个值,就是小程序端的code值,通过url传过来。之前说的https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code网址就写在这里面用程序读取。这个网址里包含三个变量,一个是code值,一个是appId,一个是appSecret,code值小程序传过来了,appId和appSecret在我们的小程序平台的设置里有直接换掉链接里的APPID和SECRET值,这两个写死就好了。执行结果

初学者理解起来可能困难,有不懂的可以给我留言。共同进步!
...全文
479 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
95lucky 2020-01-07
  • 打赏
  • 举报
回复
需要把opentid写入到数据库该怎么写

3,143

社区成员

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

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