欢迎登录 点击注册>>
记住账号 忘记密码
首页 > 动态 > 正文

微信登录

2016-04-12 14:14  来源: 博客园

摘要:一直好奇微信登录这个功能,昨天终于走通。这里记录一下。

在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微 信登录且通过审核后,可开始接入流程。

获取二维码

官方文档已经写明,开发者账号审核要¥300,网站应用在开放平台的管理中心中即可创建,审核也很快。审核通过之后就拿到了AppID和AppSecret.刚开始搞成公众号的AppId导致url一直获取不到二维码,提示scope或没有权限。

微信登录

 另外网站应用的域名也不要写错。写错了,改一次起码要等第二天才能玩了。

微信登录

https://open.weixin.qq.com/connect/qrconnect?appid=wxd96be4258f671daa&redirect_uri=http://www.warmwood.com/WeiXinAuth&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

参数正确之后就可以得到正确的二维码。接下来就是获取用户信息并登录。

实现登录

这个时候我傻了一下,这怎么调试呢,二维码只认网站应用中设置好的域名,你的localhost玩不起来。难道打日志?还要到服务器上看日志记录,这个过程有点纠结。在知乎上看到微信发布了一个Web开发者工具。下下来不知道怎么本地调试,没有见到设置的地方(羞愧中……)因为代码不多,先用笨办法实现了。这里用到了Senparc框架。

  1. var code = Request.QueryString["code"];   
  2.             var state = Request.QueryString["state"];   
  3.             //若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数   
  4.             if (code != null)   
  5.             {   
  6.                 //redirect_uri?code=CODE&state=STATE   
  7.                 Logger.Info("code为:" + code);   
  8.                 Logger.Info("state为:" + state);   
  9.                 //2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;   
  10.   
  11.                 var url =   
  12.                     string.Format(   
  13.                         "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",   
  14.                         appId, appSecret, code);   
  15.                 var result = CommonJsonSend.Send<OAuthAccessTokenResult>(null, url, null, CommonJsonSendType.GET);   
  16.                 OAuthUserInfo userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid);   
  17.               var user = QueryOrCreateUser(userInfo);   
  18.                  AuthenticationService.SignIn(user,true);   
  19.          }  

 OAuthApi.GetUserInfo获取到了相关的用户信息,包含用户的头像,城市等,这样方便我们创建或者查找到用户,然后SignIn即可。但如果一个用户用多种第三方登录,这个是就需要判别这些号是同一个人,而不至于创建多个用户。

关于本地调试

后面看到了ngrok以及相关介绍,应该是正解。 这个文档比较清楚,就不介绍了。

参考博客:http://www.cnblogs.com/fengwenit/p/4653940.html

Senparc:http://pan.baidu.com/s/1o8AbxkI

ngrok:http://jingyan.baidu.com/article/f006222826c2bcfbd3f0c885.html

ngrok下载:http://pan.baidu.com/s/1dFv0A69

官网:https://dashboard.ngrok.com/get-started

作者:stoneniqiu

出处:http://www.cnblogs.com/stoneniqiu/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。

推荐:线性重复动画

1、凡本网注明 “来源:正保IT教育网”的所有作品,版权均属正保IT教育网所有,未经本网授权不得转载、链接、转贴或以其他方式使用;已经本网授权的,应在授权范围内使用,且必须注明“来源:正保IT教育网”。违反上述声明者,本网将追究其法律责任。

2、本网部分资料为网上搜集转载,均尽力标明作者和出处。对于本网刊载作品涉及版权等问题的,请作者与本网站联系,本网站核实确认后会尽快予以处理。本网转载之作品,并不意味着认同该作品的观点或真实性。如其他媒体、网站或个人转载使用,请与著作权人联系,并自负法律责任。

联系方式:010-82329966



网站首页 走进正保 关于我们 联系我们 推广合作 人才招聘

正保远程教育Copyright ©2020 www.itatedu.com All Rights Reserved
京ICP证030467号 京ICP证030467号-9 京公网安备11010802023462
咨询热线:010-82329966