微信公众平台获取用户openid

摘要:
.openid))returnRedirect;//3.根据openid获取用户信息。如果没有成员,它将生成一个未跟随的成员=Biz.member。GetModelOrCreateNew//4.如果WxInfo信息为空,则根据accessToken拉取wxuserinfo信息并更新If(string.IsNullOrEmpty(member?

首先需要一个域名,如花生壳域名,然后在微信公众平台配置,注意,正式环境下必须要备案好了的域名,测试环境下没有关系,先公众号功能设置:》接口权限中的网页授权获取用户基本信息》注册一个测试者账号,进行设置,也要修改网页授权获取用户基本信息微信公众平台获取用户openid第1张微信公众平台获取用户openid第2张微信公众平台获取用户openid第3张微信公众平台获取用户openid第4张

微信公众平台获取用户openid第5张

public ActionResult Index(string id, string code, string state)
        {
            if (string.IsNullOrEmpty(id))
                return HttpNotFound();
//1.如果state为空,则跳转至微信授权页
            if (string.IsNullOrEmpty(state))
            {
                var redirUrl = $"http://{SiteHelper.SiteHost}/r/{id}";
                var url = "https://open.weixin.qq.com/connect/oauth2/authorize";
                url += $"?appid={SiteHelper.WeiXinAppId}&redirect_uri={HttpUtility.UrlEncode(redirUrl)}&response_type=code&scope=snsapi_userinfo&state={HttpUtility.UrlEncode(id)}#wechat_redirect";               
                return Redirect(url);
            }
        //
SiteHelper.SiteHost 是域名
        //SiteHelper.WeiXinAppId为appID 
//SiteHelper.WeiXinAppSecret为 appsecret

  //2.根据code取到用户信息

if (string.IsNullOrEmpty(code)) return Redirect(idUrl);

var dataUrl = "https://api.weixin.qq.com/sns/oauth2/access_token";
dataUrl
+= $"?appid={SiteHelper.WeiXinAppId}&secret={SiteHelper.WeiXinAppSecret}&code={code}&grant_type=authorization_code";

var accessToken = HttpHelper.GetData(dataUrl);

var token = JsonHelper.JsonDeserialize<AccessToken>(accessToken);
if (string.IsNullOrEmpty(token?.openid)) return Redirect(idUrl);

//3.根据openid取到用户信息。没有则生成未关注的member

var member = Biz.Member.GetModelOrCreateNew(token.openid, token.unionid);

//4.如果WxInfo信息为空,则根据accessToken拉取wxuserinfo信息并更新

if (string.IsNullOrEmpty(member?.MemberWxInfos?.HeadImgUrl))
{ dataUrl
= "https://api.weixin.qq.com/sns/userinfo";
dataUrl
+= $"?access_token={token.access_token}&openid={member.OpenId}&lang=zh_CN";

var userData = HttpHelper.GetData(dataUrl);

var user = JsonHelper.JsonDeserialize<Biz.Entitie.UserInfo>(userData); Biz.Member.RefreshWxInfo(member, user, true); }

//5.设置Cookie,跳转至id页
Biz.Member.SetLoginedCookies(member, Response);

return Redirect(idUrl); }

免责声明:文章转载自《微信公众平台获取用户openid》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery Validate插件实现表单强大的验证功能mitmdump 详解(3)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Swift】UILabel的简单操作方法

@IBActionfuncbuttonClick_LabelCtrl(sender: AnyObject) { //定义CGRect来初始化UILable varframe: CGRect= CGRect(x: 50, y: 50, 200, height: 200) varlabel: UILabel= UILabel(frame: frame) //获...

公众号第三方平台开发 component_verify_ticket和accessToken的获取

公众号第三方平台审核通过之后,微信的服务器会定时(10分钟一次)给"授权事件接收URL"发送component_verify_ticket,这里我们需要及时更新component_verify_ticket 就是下面这个链接 下面这里是我的处理函数 private void ResponseRequest() { //WX...

极光推送 JPush 简介 集成 MD

Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录JPush产品简介消息形式推送目标集成步骤FAQ简洁版自定义消息推送DemoActivityReceiver消息处理类B...

使用JDBC进行简单的增删改查

JDBC为java的基础。用jdbc实现对数据库的增删改查的功能是程序员的基本要求。本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包。专门用来加载jdbc的驱动。如果数据库为oracle,相应的jar包换为ojdbc6.jar。 通过下面的代码可以练习一下,掌握jdbc的使用方法,自己可以对...

DELPHI 5种运行程序的方法具体应用实例(带参数)

http://www.02t.cn/article/code/102.html https://msdn.microsoft.com/en-us/library/windows/desktop/ms687393(v=vs.85).aspx 一段代码,从2007转到XE 下,编译,运行,发现 WinExec 不能运行指定的EXE文件,换成 ShellExec...

Redis设置过期时间

一般添加值之后,不设置过期时间的话,ttl某个键会显示-1,表示此时并没有设置过期时间 当设置了过期时间之后,则会显示剩余过期秒数 设置过期时间的做法 #region 设置过期时间 //设置多少秒 client.Set<string>("name",...