您的位置:首页 > 移动开发 > 微信开发

微信网页开发授权(获取用户信息) 微信公众平台开发教程(4)

2017-03-03 14:37 691 查看

微信网页授权

Senparc.Weixin SDK 是由盛派网络(Senparc)团队自主研发的针对微信各模块的

开发套件(C# SDK),

已全面支持微信公众号、微信支付、企业号、开放平台、JSSDK、摇一摇周边等模块。

快使用 Senparc.Weixin SDK 轻松打造微信各平台的扩展应用吧!

说明

关于网页授权的两种scope的区别说明

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

关于特殊场景下的静默授权

1、上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;

2、对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。

具体而言,网页授权流程分为四步:

1、引导用户进入授权页面同意授权,获取code

2、通过code换取网页授权access_token(与基础支持中的access_token不同)

3、如果需要,开发者可以刷新网页授权access_token,避免过期

4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

微信公众号配置







程序代码

string _code = ReqUtils.GetString("code", "");
string _state = ReqUtils.GetString("state", "");

if (_code == "" || _code == "authdeny")
{
if (_code == "")
//表示用户还未授权
_state = "JeffreySu-" + DateTime.Now.Millisecond;//随机数,用于识别请求可靠性
string authUrl = OAuthApi.GetAuthorizeUrl("wx64a07fabd01d0a43", HttpContext.Request.Url.ToString(), _state, OAuthScope.snsapi_userinfo, "code", false);
HttpContext.Response.Redirect(authUrl, true);
}
else
{
Response.Redirect("~/Error.html", true);
}
}
else
{
//执行到这里  用户同意授权,获取code
OAuthAccessTokenResult result = null;
try
{
//通过code换取网页授权access_token
result = OAuthApi.GetAccessToken(Configuration.Config.AppID, Configuration.Config.AppSecret, _code);
if (result == null && result.errcode != ReturnCode.请求成功)
{

return;
}

}
catch (Exception x)
{
return;
}
OAuthUserInfo userInfo = null;
try
{
//拉取用户信息(需scope为 snsapi_userinfo)
userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid);
}
catch (ErrorJsonResultException ex)
{

return;
//未关注,只能授权,无法得到详细信息
//这里的 ex.JsonResult 可能为:"{\"errcode\":40003,\"errmsg\":\"invalid openid\"}"
}
//下面就是你的判断了。
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: