当前位置: 首页 > wzjs >正文

延边州网站建设旅游网站建设的现状

延边州网站建设,旅游网站建设的现状,wordpress修改文字内容,晨光文具店网站建设html实现微信授权登陆前言网页授权的两种 scope 的区别开发指南第一步:用户同意授权,获取code第二步:通过 code 换取网页授权access_token第三步:拉取用户信息(需 scope 为 snsapi_userinfo)代码实现:效果图总结前言 …

html实现微信授权登陆

  • 前言
  • 网页授权的两种 scope 的区别
  • 开发指南
    • 第一步:用户同意授权,获取code
    • 第二步:通过 code 换取网页授权access_token
    • 第三步:拉取用户信息(需 scope 为 snsapi_userinfo)
  • 代码实现:
  • 效果图
  • 总结

前言

在一次前端项目中,需要在网页端拉起微信,实现微信授权登录,然后把调用微信API,获取到用户信息,返回给后端。

网页授权分为两种,一种静默授权,一种非静默授权。微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;

这篇文章就讲诉一下如何实现微信授权登录。

网页授权的两种 scope 的区别

  1. snsapi_base为 scope 发起的网页授权,是用来获取进入页面的用户的 openid 的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
  2. snsapi_userinfo为 scope 发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

开发指南

  1. 引导用户进入授权页面同意授权,获取code
  2. 通过 code 换取网页授权access_token(与基础支持中的access_token不同)
  3. 如果需要,开发者可以刷新网页授权access_token,避免过期(非必需步骤)
  4. 通过网页授权access_token和 openid 获取用户基本信息(支持 UnionID 机制)

第一步:用户同意授权,获取code

scope若为snsapi_base:即选择静默授权,调用此微信服务端API接口

https://open.weixin.qq.com/connect/oauth2/authorize?appid=appId&redirect_uri=redirect_uri&response_type=code&scope=snsapi_base&state=123#wechat_redirect

scope若为snsapi_userinfo:即选择非静默授权,调用此微信服务端API接口

https://open.weixin.qq.com/connect/oauth2/authorize?appid=appId&redirect_uri=redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

参数说明:
在这里插入图片描述

第二步:通过 code 换取网页授权access_token

如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

请求方法:

获取 code 后,请求以下链接获取access_token:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

在这里插入图片描述

第三步:拉取用户信息(需 scope 为 snsapi_userinfo)

如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和 openid 拉取用户信息了。

请求方法

http:GET(请使用 https 协议):

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

在这里插入图片描述

代码实现:

前端:

需要引入jquery插件

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
function getCode() {$.ajax({url: "/oauth",type: "get",success(res) {window.location.href = res.data;}})
}function isCode() {return window.location.search.includes('code=')
}function lanuch() {if (isCode()) {console.log("getCode");} else {this.getCode()}
}lanuch();

后端接口:

*** 微信网页授权*/
@RestController
@Slf4j
public class WeixinOauthHandler {/*** 第一步:用户同意授权,获取code** @param response*/@RequestMapping("/oauth")public void oauth(HttpServletResponse response) throws IOException {//	项目服务器urlString path = "http://***:9936/" + "invoke";try {path = URLEncoder.encode(path, "UTF-8");} catch (Exception e) {e.printStackTrace();}String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" +"appid=你的公众号appid" +"&redirect_uri=" + path +"&response_type=code" +"&scope=snsapi_userinfo" +"&state=comi" +"#wechat_redirect";log.info("url===" + url);response.sendRedirect(url);}/*** 第二步:用户同意授权,页面跳转至/invoke** @param request*/@RequestMapping("/invoke")public void invoke(HttpServletRequest request) {String code = request.getParameter("code");log.info("code=====" + code);//通过code获取ACCESS_TOKEN//认证服务器String url = "https://api.weixin.qq.com/sns/oauth2/access_token?" +"appid=您的公众号appid" +"&secret=您的公众号密钥" +"&code=" + code +"&grant_type=authorization_code";String object = HttpUtil.doGet(url);JSONObject jsonObject = JSONObject.parseObject(object);log.info("jsonObject====" + jsonObject);String access_token = jsonObject.getString("access_token");String openid = jsonObject.getString("openid");//第三步:拉取用户信息String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?" +"access_token=" + access_token +"&openid=" + openid +"&lang=zh_CN";String userInfo = HttpUtil.doGet(userInfoUrl);JSONObject userJson = JSONObject.parseObject(userInfo);log.info("userJson=====" + userJson);}}

效果图

在这里插入图片描述

可以获取到国家、地区、openid、code、微信昵称、微信头像、性别、语言等等字段。
在这里插入图片描述

总结

顺便给大家提供一个微信公众号测试平台:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

在这里插入图片描述

需要在微信公众号后台配置后,才能后台才能调用成功哦~

http://www.dtcms.com/wzjs/585288.html

相关文章:

  • 做网站帮外国人淘宝专业微信网站建设公司首选公司哪家好
  • 网页站点规划国外免费建购物网站
  • 爱站网 关键词挖掘工具站网站推广技术
  • 淘宝客建站还能赚钱吗建湖网站开发
  • 欢迎访问中国建设银行网站个人客户6新品怎么推广效果最好
  • 如何做一间公司的网站网络营销战略
  • 中山民众网站建设前端网站主题怎么做
  • 公司网站开发 中山龙岩做网站公司
  • 无极网站设计中山网页模板建站
  • 一个网站多个域名备案懂的建设网站
  • 电影vip免费网站怎么做的百度视频seo
  • 苏州网站设计公司兴田德润在哪里呢非盈利性备案网站 淘宝客网站
  • vps空间如何做网站备份网站文件命名
  • ps做图游戏下载网站有哪些公司网站的实例
  • 文章标题-栏目名称-网站名 dede有引导页的网站
  • 网站怎么做子页医院设计网站建设
  • 广东省示范校建设专题网站东莞 手机网站制作
  • 做网站收费标准网站域名 空间 是每年都要缴费吗
  • asp.net 网站 结构做网站平台需要多少钱
  • 网站建设 镇江贵州网站备案局
  • 深圳网站建设服务公已备案网站新增接入
  • wordpress下载网站模板怎么用Centos建网站必须域名
  • 泰安网站制作电话WordPress对象存储插件
  • 点击即玩的小游戏网站没网站可以做快排吗
  • 网站建设入账扬州网站建设价格低
  • 影楼网站怎么做aso优化报价
  • 十堰专业网站建设南宁优化网站收费
  • 国外网站dns 地址禁止汕头专业网页设计培训哪个好
  • 网站服务器放置地 网站接入服务提供单位怎么填用scala做的网站
  • 公司信息化网站建设实施方案建设网站空间怎么预算