C# 开发微信扫码登录

一,JS 代码参考

<script type="text/javascript">

function GetRequest() {

var url = location.search; //获取url中"?"符后的字串

var theRequest = new Object();

if (url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for (var i = 0; i < strs.length; i++) {

theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);

}

}

return theRequest;

}

window.onload = function () {

$(".AdminBody").css("display", "none");

var strCookie = document.cookie;

// alert("strCookie=" + strCookie);

if (strCookie == "报表管理员")

{

$(".AdminBody").css("display", "block");

}

else

{

var Code = GetRequest()['code'];

if (Code) {

// alert("Code有值");

//if (strCookie != null && strCookie != "")

//{

// strCookie = strCookie.split('=')[1];

//}

if (!Code || strCookie) {

Code = strCookie;

}

$.ajax({

type: 'post',

url: "HandelServices/Login.ashx?Code=" + Code,

dataType: "json",

async: false,

success: function (data) {

// alert("Success");

console.log(data);

if (data != null && data != "") {

var result = JSON.parse(data);

var roleName = result[0].RoleName;

var Title = result[0].Title;

$("#HiddUser").val(Title);

document.cookie = roleName

//alert($("#HiddUser").val());

switch (roleName) {

case "报表管理员":

$(".AdminBody").css("display", "block");

break;

}

}

}, error: function () {

//alert("Error");

$(".AdminBody").css("display", "none");

}

});

} else {

// alert("Code无值");

window.location.href = 'https://open.work.weixin.qq.com/wwopen/sso/qrConnect?app;

}

}

}

</script>

二。后台代码参考(一般处理程序)

using FK.SN.Utilities.Common;

using FK.SN.WeChat.CorpAuthServiceClient;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

namespace FK.SN.WeChat.HandelServices

{

/// <summary>

/// Login 的摘要说明

/// </summary>

public class Login : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "text/plain";

string Code = context.Request.Params["Code"].CastToString();

string AppID = ConfigHelper.GetConfigStr("AppID").CastToString();

string AppSecret = ConfigHelper.GetConfigStr("AppSecret").CastToString();

Log.CreateLogManager().Debug("Code=" + Code);

Log.CreateLogManager().Debug("AppID=" + AppID);

Log.CreateLogManager().Debug("AppSecret=" + AppSecret);

string UserAccount = "";

string getTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken";

IDictionary<string, string> parameters = new Dictionary<string, string>();

parameters.Add("corpid", AppID);

parameters.Add("corpsecret", AppSecret);

string GetTokenData = HttpUtils.DoGet(getTokenUrl, parameters);

//反序列化为对象,取得access_token,然后通过access_token和code获得用户账号

// GetTokenData 数据{"errcode":0,"errmsg":"ok","access_token":"Mhi1RW4MTat2XX6miEVUvu1o1ETpm06SAn_WBtT6DClVtp1mCiPIFSt1HWjotGy_sUrmwWI_HZeC8UgH_yN9Y5Rlsxib-hQqEVp4YnY5nNjozfW-r_85aoQgTvXss7A7iR_jU8I-L0-m0ZnCvAdU5uTPXhDUW41IaRJozynI9v-tvEC8LN7LIBwSrWsg75HjJzh3hBHSsg5FLvdHBPKpjZ-b2nzksm3ikc96KUcW2yvokvhaAIFtYKF702eTYs7FDxYbHNDshqyPyqEb7FTWVI1myb1OJwoPCeV1QmlIskE","expires_in":7200}

GetToken list = SerializeHelper.JsonDeSerialize<GetToken>(GetTokenData);

if (list != null)

{

string access_token = list.access_token;

Log.CreateLogManager().Debug("access_token=" + access_token);

string UserUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo";

IDictionary<string, string> parametersUser = new Dictionary<string, string>();

Log.CreateLogManager().Debug("Code=" + Code);

parametersUser.Add("access_token", access_token);

parametersUser.Add("code", Code);

string GetUserAccount = HttpUtils.DoGet(UserUrl, parametersUser);

Log.CreateLogManager().Debug("GetUserAccount=" + GetUserAccount);

//{"UserId":"WangSenSen","DeviceId":"","errcode":0,"errmsg":"ok"}

GetUser listUser = SerializeHelper.JsonDeSerialize<GetUser>(GetUserAccount);

if (listUser != null)

{

//有账号,判断该账号是否是管理员

UserAccount = listUser.UserId;

Log.CreateLogManager().Debug("UserAccount=" + UserAccount);

try

{

if (!string.IsNullOrEmpty(UserAccount))

{

Log.CreateLogManager().Debug(UserAccount);

string GetAdministratorAPIURL = FK.SN.Utilities.WebPage.ConfigHelper.GetConfigStr("GetAdministrator");

Log.CreateLogManager().Debug("GetAdministratorAPIURL=" + GetAdministratorAPIURL);

// Log.CreateLogManager().Debug("获取到了连接字符串GetSalesRepAPI:" + GetSalesDataAPIURL);

IDictionary<string, string> parametersAdmin = new Dictionary<string, string>();

parametersAdmin.Add("UserAccount", UserAccount);

// Log.CreateLogManager().Debug("获取到了参数个数:" + parameters.Count);

string Data = HttpUtils.DoGet(GetAdministratorAPIURL, parametersAdmin);

Log.CreateLogManager().Debug("获取到了Data:" + Data);

if (!string.IsNullOrEmpty(Data))

{

Log.CreateLogManager().Debug("Data=" + Data);

context.Response.Write(Data);

}

else

{

context.Response.Write("false");

}

}

}

catch (Exception ex)

{

context.Response.Write("false");

}

}

}

else

{

Log.CreateLogManager().Debug("未获取到access_token");

}

}

public bool IsReusable

{

get

{

return false;

}

}

}

class GetUser

{

public string UserId { get; set; }

public string DeviceId { get; set; }

public int errcode { get; set; }

public string errmsg { get; set; }

}

class GetToken

{

public int errcode { get; set; }

public string errmsg { get; set; }

public string access_token { get; set; }

public int expires_in { get; set; }

}

}