原来的写法,使用node.js
其实就是小程序端访问接口,传来一个code参数,接下来后台拿到code之后可以根据code、appid、secret获取session_key和openid,拿到这两个之后后端的工作基本就结束了,可以参考官网
接口迁移之后的写法,使用.Net,代码就怎么简单怎么来
/// <summary>
/// 小程序授权
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpPost("reqsession")]
public Response reqsession(wxcodedto code)
{
Response res = new Response();
string AppSecret = "Secret";
string AppId = "Appid";
string OauthUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId + "&secret=" + AppSecret + "&js_code=" + code.code + "&grant_type=authorization_code";//序列化解析数据
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(OauthUrl);
request.Method = "GET";
request.ContentType = "text/html;charset=utf-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
var s1 = JsonConvert.DeserializeObject<WxOauthModle>(retString);
res.Message = new { session_key = s1.session_key, openid = s1.openid};
return res;
}
在测试的过程中可能会遇到"errcode":40163,"errmsg":"code been used,"这个问题,ok,继续参考官网,
这里可以看一下在测试接口的时候接口传的code是否一直用的同一个,授权接口基本就这样,可能还会存在本地测试接口可以走通但是小程序却走不通的情况,发布到服务器使用域名去访问一下试试说不定就可以了。