Net微信网页开发解决了不同微信官方账号或微信官方账号与移动应用之间的用户账号统一问题
发展背景:
最近一直在微信上做网站应用开发,这段时间在微信开发上收获了很多开发技巧。主要联系人是微信微信官方账号和微信网站app第三方登录授权,以及微信会员卡、优惠券和扫描两位数码功能。今天主要想总结一下微信微信官方账号登录和网站app第三方应用微信授权登录之间获得的Openid关联问题,让双方可以用同一个账号登录。
首先要区分微信公众平台开发是指微信微信官方账号进行业务开发(https://mp.weixin.qq.com/wiki?t=resource/RES _ mainid=MP 1445241432),需要在微信开发平台创建网站应用,授权网站微信登录(https://open.weixin.qq.com/cgi-bin/showdocument?action=dir _ list t=resource/RES _ list verify=1 lang=zh _ cn),但如果我们想关联微信官方账号授权登录微信网站获得的Oppenid,可以通过UnionID进行关联。
微信开放平台配置:
登录微信开放平台进行微信微信官方账号绑定
下图为微信开发平台公众账号相关情况:
UnionID机制描述:
开发者可以通过OpenID获取用户的基本信息。尤其是开发者有多个移动应用、网站应用、公共账号的情况下,可以获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一微信开放平台账号下的移动应用、网站应用、公共账号,用户的unionid都是唯一的。换句话说,同一个微信开放平台下,同一个用户对不同的应用拥有相同的unionid。
获取用户的基本信息(包括UnionID机制)。开发者可以通过OpenID获取用户的基本信息。使用https协议。
接口调用请求描述http请求方法: GEThttps://api.weixin.qq.com/cgi-bin/user/info? Access _ token=Access _ token OpenID=OpenID lang=zh _ cn微信公众号微信登录配置:
在基础配置中获取微信微信官方账号的appid和appsecrect(必须是自己的微信官方账号)。白名单是您在本地调试微信项目时需要添加的本地ip地址,否则无法获得想要的accsee_token。
配置服务器地址(url):这是你的项目与微信服务器通信的地方。您不能填写错误的令牌。你可以在这里复制。消息加解密密钥由微信随机生成。
在微信微信官方账号中设置对应的服务域名、js接口安全域名和网页授权域名
代码实现:
用户同意授权获取相应的授权码代码(注意:我这里使用的是微信微信官方账号的登录授权,如果需要更改api进行网站授权,后面两个步骤相同)
微信网站用户同意授权代码的api:
请注意,第三方在使用网站应用授权登录前已经获得了相应的网页授权范围(范围=snsapi_login),然后在PC端打开如下链接:https://open.weixin.qq.com/connect/qrconnect? Appid=Appid redirect_uri=redirect _ uri response _ type=codescope=scope este=state #微信_ redirectif提示“链接不可访问”的消息,请检查参数是否填写错误,如redirect _ uri的域名与审核时填写的授权域名不一致或范围不是snsapi_login。
//授权条目公共ActionResult WxLogin(){//异步跳转地址varloginur=' http://' request . URL . authorityrol . action(' wxregistersandlog in ');返回重定向(' https://open . weixin . QQ.com/connect/oauth 2/authorize?appid=' appid 'redirect_uri=' Url。encode(loginrol)' response _ type=code scope=snsapi _ user infostate=state #微信_ redirect ';}通过代码获取网页授权access_token和用户唯一标识符Openid,最后拉取用户信息(作用域应为snsapi_userinfo)
///摘要//范仲裁庭(阿久unionid(联合id)范登韦恩斯特范登韦恩斯特范登韦恩斯特范登韦恩斯特,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,你是说.)///summary//param name=' code '范思哲范思哲范思哲/param///param name='ReturnUrl '阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧/param///返回/returnspublicic异步任务操作结果wx注册登录(字符串代码,字符串returnurl='){ try {//阿巧阿巧阿巧阿巧阿巧阿巧全球资源定位器(Uniform Resource Locator)字符串=ReturnUrl://阿久程式码云娥应用程序创建你好wxappid唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟访问令牌唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟oppenidhttpclient客户端=new http client();var js constraint=wait(wait web客户端)。获取同步(' 339 API。微信。QQ。com/SNS/誓言2/access _ token?appid='云娥秘密的appid='云娥appcret ' code=' code ' grant _ type=authorization _ code ').内容。readasstringassync();//-你好-你好奥本迪你好access _ token var jsonauthor obj=jsonconvert .取消初始化对象(jsconstruction,new { access_token='),openid=.gettype();if(jsonauthor obj。OpenID==null){ 0返回内容(jsconstruction)李亚文李亚文李亚文');}var myuser=新用户{ wx OpenID=jsonauthor obj。OpenID } .SelectObject()://吴登盛吴登盛吴登盛陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜陈列柜,阿强阿强阿强阿强阿强阿强阿强阿强阿强阿强阿强阿强if (myuser==null){//拜占庭先生(日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日范围吾曰snsapi _ userinfo,你好unionid(哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥,撌粜裕)js constraint=wait(wait web客户端)。获取同步(' 339 API。微信。QQ。com/SNS/userid信息?access _ token=' jsonauthor obj。access _ token ' OpenID=' jsonauthor obj。OpenID ' lang=zh _ cn ').内容。readasstringassync();动态jsonobj=jsonconvert .取消初始化对象(jsconstruction、new {昵称='、headimgurl='、sex='、openid='、country=',省='、city='、union id=' }).gettype();//我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说.unionid(联合id)乔凡乔,霍阿巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴openid(开放代码),1821年,你好吗?你好吗var isexietuserinfo=新用户(){ union id=union id } .SelectObject():if(isExistUserInfo!=null/中文字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉字幕翻译:贾宝玉{//陈鉴真的openid isExistUserInfo .wxopenid=jsonobj。openidisexissinesuserinfo .update();//你是谁返回重定向(url):}else//你好吗{//吴邦国int cuserid=新用户{ wximage=jsonobj。headimgurl,wxnickname=jsonobj。昵称,wxopenid=jsonobj。性=转换.tot 32(jsonbj。性),国家=jsonobj。国家,省=jsonbj,省,市=jsonobj。城市,unionid=unionid).create();返回forward to action(' wx register ',' Login ',new { return URL=URL });}}else{//你是谁返回重定向(url):}}catch(异常e){返回View('MessageInfo ',',' e . tostring());}}朱塞佩朱塞佩朱塞佩朱塞佩,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲,吴亚玲吴亚玲吴亚玲。
版权声明:Net微信网页开发解决了不同微信官方账号或微信官方账号与移动应用之间的用户账号统一问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。