微信小程序登录之获取openid

每一个微信小程序对应每一个用户都有一个固定的ID,这个ID就是openid。 博主想把“小汽车保养里程碑单机版”搬上微信小程序,第一件事情应该就是在小程序中能够识别不同的用户,每个用户自己保存自己的数据,需要一个唯一的识别号,就是这个openid。

先看看小程序官方的说明:

第一步、调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
第二步、调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 。

微信小程序登录之获取openid_第1张图片

博主第一次接触这些功能,感觉有点复杂呢,不过用了一天时间,也还是搞定了获取openid。首先在小程序中弄一个按钮:

微信小程序登录之获取openid_第2张图片

 ts中定义点击按钮,第一步访问微信的服务器获得一个code。

user_login: function () { 
        wx.login({
          success: (res0) => 
          {
            console.log(res0);
           // let code = res.code
            let that = this
                      wx.request
                      ({
                        url: 'https://w1914z4829.zicp.fun/user_code',
                        method: "POST", //请求的方式
                        data: { code: res0.code },
                        success: (res1) => { console.log(res1) , that.setData({ openid_list: res1 })  }
                      })
                    },
                  })
        },

微信小程序登录之获取openid_第3张图片

拿到code后,继续访问自己的后端服务器。后端服务器技术栈是C#的webapi + EFcore + SQLite。后端服务器接到一个post请求,code在http的报文中:

//-------POST---user_code API-----------
app.MapPost("/user_code", async (HttpRequest request) =>
{
    var user_code = await request.ReadFromJsonAsync();
    string openid = null;
    if (user_code != null)
    {
        openid = get_openid(user_code.code);
        Console.Write("openid:" + openid); 
    }
    return openid;
});

后端服务器再去请求微信的服务器:

string get_openid(string js_code)//获取前端传过来的值
{   

    string url = "https://api.weixin.qq.com/sns/jscode2session?appid=wx1853c69dc576xxxx&secret=6859400ccef19af901a8cbfb167exxxx&js_code=" + js_code + "&grant_type=authorization_code";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    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;   
  
}

微信服务器返回了openid给我的后端服务器,还返回了session key,暂时不知道拿来做什么。

后端服务器API把openid返回给了微信小程序,小程序把openid显示了出来。

微信小程序登录之获取openid_第4张图片

 有了这个openid,小程序就可以区分用户的数据,我只需要在数据库的表中加一个openid字段,每次用户提交数据,保存上相应的openid,这些数据就自然属于这个用户了。

 

你可能感兴趣的:(微信小程序开发,微信小程序,小程序,微信)