C# 微信网页授权多域名解决
在做微信开发的时候,会遇到这样的场景:一个公众号,会有多个业务:官网、论坛、商城等等
微信网页授权域名 目前最多可以填写两个!!!,那么问题来了?这应该怎么办?
答案就是: 做一个中转服务!
域名1: www.test.com
域名2: bbs.test.com
中转域名:zhongzhuan.test.com
(说明! 域名不一定非得是子域名!例如 www.baidu.com 也可以)
网上的教程大多数都是php的 C#的少之又少,现在我来给大家做一个,原理很简单,实现也很简单
话不多说,直接粘贴代码,简单的!
public class AuthController : Controller
{
//接受要跳转的url
public ActionResult Index(string redirectUri) //redirectUri 要跳转的网页链接 例如 bbs.test.com
{
if (string.IsNullOrWhiteSpace(redirectUri))
{
ViewBag.error = "跳转链接参数错误";
return View();
}
var gotoUri = "gotoRedirectUri=" + redirectUri;
var link = "http://zhongzhuan.test.com/Auth/AuthCode?" + gotoUri;
var uri = WxConfig.getCodeUri(link);
return Redirect(uri);
}
/// <summary>
/// 授权跳转到这里
/// </summary>
/// <param name="code">微信的code</param>
/// <param name="state">微信的state</param>
/// <param name="gotoRedirectUri">要跳转的url</param>
/// <returns></returns>
public ActionResult AuthCode(string code,string state,string gotoRedirectUri)
{
//判断code是否为空
if(string.IsNullOrWhiteSpace(code))
{
ViewBag.error = "code 为空!";
return View();
}
if(string.IsNullOrWhiteSpace(gotoRedirectUri))
{
ViewBag.error = "跳转链接不能为空!";
return View();
}
return Redirect("http://"+gotoRedirectUri+"?code="+code+"&state="+state);
}
}
所用到的类
public class WxConfig
{
private static string appId => ConfigurationManager.AppSettings["WxAppId"];
//授权页面
public static string getCodeUri(string redirect)
{
var enencodeUri = HttpUtility.UrlEncode(redirect.ToLower()); //编码
return $@"https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&redirect_uri={enencodeUri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
}