资源简介

微信小程序根据wx.login得到的code从Csharp后台获取openid和session_key(后台实现了4种方式调用jscode2session)

资源截图

代码片段和文件信息

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
/*   使用HttpWebRequest请求方式,需要包含的命名空间
using Newtonsoft.Json;
using System.Net;
*/

namespace UploadImage.Controllers
{
    //客户端发来的数据
    public class clientData
    {
        public string encryptedData { get; set; }
        public string iv { get; set; }
        public string rawData { get; set; }
        public string signature { get; set; }
        public string js_code { get; set; }
    }
    //登录数据,根据登录凭证获取openId和会话密钥
    public class loginData
    {
        public string openid { get; set; }
        public string session_key { get; set; }
        public string unionid { get; set; }
        public int errcode { get; set; }
        public string errmsg { get; set; }
    }
    public class ValuesController : ApiController
    {
        private const string appID = “*****“;
        private const string appSecret = “******“;
        private clientData client_data ;
        private loginData login_data;
        static string loginCode;
        // GET api/values
        public IEnumerable Get()
        {
            return new string[] { “value1“ “value2“ };
        }

        //登录
        #region  使用HttpClient发送http请求是会面临频繁连接问题 https://www.cnblogs.com/lori/p/4045633.html
        [HttpPost]
        public async Taskject> login([FromBody]Jobject ob)//异步方法不知道需不需要定义为static方法,我这里没定义为static也可以用
        {
            client_data = new clientData();
            loginCode = client_data.js_code = Convert.ToString(ob[“js_code“]);
            client_data.encryptedData = Convert.ToString(ob[“encryptedData“]);
            client_data.iv = Convert.ToString(ob[“iv“]);
            client_data.rawData = Convert.ToString(ob[“rawData“]);
            client_data.signature = Convert.ToString(ob[“signature“]);
            string url = $“https://api.weixin.qq.com/sns/jscode2session?appid={appID}&secret={appSecret}&js_code={loginCode}&grant_type=authorization_code“;
            //创建HttpClient(注意传入HttpClientHandler)
            var handler = new HttpClientHandler();
            using (var http = new HttpClient(handler))
            {
                //await异步等待回应
                var response = await http.GetAsync(url);
                //确保HTTP成功状态值
                response.EnsureSuccessStatusCode();

                //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
                var result =  await response.Content.ReadAsStringAsync(); //返回的是JSON字符串
                //JSON字符串反序列化为JSON对象并返回
                return (Jobject)JsonConvert.Deserializeobject(res

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-22 16:56  pages\
     目录           0  2019-05-22 16:55  pages\usrinfo\
     文件        3693  2019-05-21 10:37  pages\usrinfo\usrinfo.js
     文件          27  2019-05-16 14:57  pages\usrinfo\usrinfo.json
     文件         278  2019-05-17 10:31  pages\usrinfo\usrinfo.wxml
     文件          32  2019-05-16 14:57  pages\usrinfo\usrinfo.wxss
     目录           0  2019-05-22 16:58  utils\
     文件        1130  2019-05-22 16:58  utils\util.js
     文件        9495  2019-05-22 17:01  ValuesController.cs

评论

共有 条评论