记录微信网页授权注意事项
1. 登录微信公众平台
2. 配置信息
接口配置信息:
公众号平台会调用这个url,参数如下
public class WechatRequestModel
{
public string Signature { get; set; }
public string TimeStamp { get; set; }
public string Nonce { get; set; }
public string Echostr { get; set; }
}
接口定义:这里会进行验证,结合token等参数验证.返回成功之后,配置完成.
[NonUnify]
[HttpGet("wechat/checkToken")]
public ActionResult ValidToken([FromQuery]WechatRequestModel model)
{
ContentResult content = new ContentResult();
string echoStr = model.Echostr;
//通过验证,出于安全考虑。(也可以跳过)
if (CheckSignature(model))
{
if (!string.IsNullOrEmpty(echoStr))
{
//将随机生成的 echostr 参数 原样输出
content.Content = echoStr;
return content;
}
}
content.Content = "校验失败";
return content;
}
3.开始请求 按照下面的步骤
2 第二步:通过 code 换取网页授权access_token
4 第四步:拉取用户信息(需 scope 为 snsapi_userinfo)
第一步:根据规则,编辑访问获取code的url
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx9b853ec4139b8390&redirect_uri=http%3A%2F%2Ft4450798j6.51vip.biz%2Fapi%2Fwechat%2FgetCallback&response_type=code&scope=snsapi_base&state=123#wechat_redirect
redirect_url就是上面 接口信息配置中的 回调url.
发到微信客户端,测试,发现 redirect_uri域名与后台配置不一致,错误码10003
此时需要在开发平台修改网页授权获取用户信息
填写的内容和js安全域名接口一致即可.
接下来还需要微信扫码关注
此时 访问我们编辑的url正常,但是我们需要一个回调接口来接收返回值code
/// <summary>
/// 微信accessToken返回值
/// </summary>
public class WechatAccessTokenModel
{
public string Access_Token { get; set; }
/// <summary>
/// 过期时间 秒
/// </summary>
public int Expires_In { get; set; }
public string Refresh_Token { get; set; }
public string Openid { get; set; }
public string Scope { get; set; }
}
[HttpGet("wechat/getCallback")]
public async Task<ActionResult> GetCallback([FromQuery] WechatCallBackModel model)
{
var code = model.Code;
}
这里的wechat/getCallback接口就是前面 根据规则,编辑访问获取code的url中的 redirect_uri.
正常到这一步 就可以获取code
然后进行第二步 ,获取access_token以及openId
获取 code 后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回值:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
先记录到这里.