美文网首页
微信网页授权

微信网页授权

作者: Zn_go | 来源:发表于2019-08-02 11:01 被阅读0次

微信网页授权文档地址:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

微信网页授权步骤:
一、用户同意授权,获取code

注:公众号需要有授权作用域

url=https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号唯一标识&redirect_uri=回调地址&response_type=code&scope=授权作用域&state=STATE#wechat_redirect
参数解释

授权流程:
1.用户点击公众号菜单
调用链接url,用户在同意授权之后,回调地址将会拿到code
注:每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
2.将code发送至第三方网页服务器(就是我们开发服务器的后端接口)

二、通过code,获取openid,获取用户基本信息

url=https://api.weixin.qq.com/sns/oauth2/access_token?appid=公众号唯一标识&secret=公众号的appsecret&code=第一步拿到的code&grant_type=authorization_code

后端拿到code之后,使用Spring RestTemplate类 进行请求
注:对于RestTemplate类的使用方法,请查看:
https://docs.spring.io/spring/docs/5.1.8.RELEASE/javadoc-api/

服务器后端处理code

// 注意替换appid、appsecret与code
String tokenURL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=公众号唯一标识&secret=公众号的appsecret&code=第一步拿到的code&grant_type=authorization_code";
// 实例化RestTemplate对象
RestTemplate restTemplate = new RestTemplate();
// 调用RestTemplate对象的getForObject()方法,执行url请求,获得相应结果
String tokenResponse = restTemplate.getForObject(tokenURL, String.class);

请求结果详解:

// 请求结果样例(请求正确,将返回一个json字符串)
{
    "access_token":"ACCESS_TOKEN",
    "expires_in":7200,
    "refresh_token":"REFRESH_TOKEN",
    "openid":"OPENID",
    "scope":"SCOPE" 
 }
请求结果参数

此时拿到了access_token,可以进行用户信息的拉取

url=https://api.weixin.qq.com/sns/userinfo?access_token=获取的access_token&openid=获取的openid&lang=zh_CN

服务器后端请求获取用户信息

// 注意替换参数
String userinfoURL = "https://api.weixin.qq.com/sns/userinfo?access_token=获取的access_token&openid=获取的openid&lang=zh_CN";
// 调用RestTemplate对象的getForObject()方法,执行url请求,获得相应结果
String userinfoResponse = restTemplate.getForObject(userinfoURL, String.class);

请求结果详解:

// 请求结果样例(请求正确,将返回一个json字符串)
{   
    "openid":" OPENID",
    " nickname": NICKNAME,
    "sex":"1",
    "province":"PROVINCE"
    "city":"CITY",
    "country":"COUNTRY",
    "headimgurl":       "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
    "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
请求结果参数

注:在获取用户信息的时候,微信使用ISO-8859-1编码,需要进行编码转化

// 注userinfoJson是将请求结果转化为JSONObject
String nickname = new String(userinfoJson.getString("nickname").getBytes("ISO-8859-1"), "UTF-8");

到此,网页授权结束

相关文章

  • 基于Node.js的微信JS-SDK后端接口实现(三)

    微信公众号开发之五微信网页授权 开始之前建议先阅读微信官方文档 微信公众号开发之五微信网页授权 一.网页授权的作用...

  • django: 微信网页授权

    微信网页授权基础知识 网页授权的最终目的就是获取微信的用户信息,微信的网页授权方式有两种 snsapi_base:...

  • 微信公众号开发(二)

    微信公众号开发文档 微信网页授权 微信客户端中访问第三方网页,可通过 微信网页授权机制 来获取用户信息。授权机制:...

  • 微信开发之微信网页授权

    微信网页授权 所谓的微信网页授权说白了就是 用户微信客户端内访问第三方网页,公众号可以根据网页授权这个机制来获取用...

  • 微信网页授权

    微信通过网页授权可以在网页内获取微信用户信息,进而在网页内实现相关的业务逻辑。 微信网页授权的scope有两种,一...

  • 微信网页授权

    重新整理做过的功能,以及过程遇到问题,温故而知新 平台开发文档 一 准备工作 (a.接入 b.配置) a) 修改/...

  • 微信网页授权

    背景 用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 配...

  • 微信网页授权

    一、(测试号为例)大家可以先查看http://www.cnblogs.com/txw1958/p/weixin71...

  • 微信网页授权

    微信网页授权文档地址: https://mp.weixin.qq.com/wiki?t=resource/res_...

  • vue + js 实现微信授权登录

    描述点 微信相关开发知识了解 微信网页授权 vue router.beforeEach vuex 授权详解 页面...

网友评论

      本文标题:微信网页授权

      本文链接:https://www.haomeiwen.com/subject/moskdctx.html