微信网页授权——获取code、access_token、openid,及跨域问题解决
首先在微信开发文档中有提到微信网页授权的操作步骤:
第一步:用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri = REDIRECT_URL&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
其中scope有静默授权和非静默授权两种,在这里我们使用非静默授权:scope等于snsapi_userinfo,为后面获取用户信息做准备。
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
code说明:code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
第二步:通过code换取网页授权access_token
获取code后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
但是在获取access_token的过程中,我们会遇到一个跨域问题,什么post、get和jsonp方法都试过了,都不行,那么怎么解决这个跨域问题呢?
首先我们知道我们是不可能改变微信的代码,那么我们就只能想到的解决方法是利用别人的代理来进行中转,那么从网上找到了如下方法:
var target = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=AECRET&code="+value+"&grant_type=authorization_code";
$.ajax({//2.通过code换取网页授权access_token
url: 'http://query.yahooapis.com/v1/public/yql',//雅虎代理url
dataType: "jsonp",//雅虎代理数据格式
data:{
q:"select * from json where url=\'"+target+"'",
//代理返回格式
format:"json"
},
success: function (data) {
alert("请求成功");
alert("openid:"+data.query.results.json.openid);
console.log("openid:"+data.query.results.json.openid);
}
});
以上的用的就是yahoo的代理ypl进行一个中转,ypl是雅虎旗下一个用来转换数据的,从而获取到了access_token和openid。
- 微信会员注册开发【带源码】:网页授权,得到code后在当前页面获取openid,js+php实现跨域请求
- 【OAuth2.0网页授权】根据code获取access_token和openId(Senparc.Weixin.MP.dll)
- 【OAuth2.0网页授权】根据access_token和openId获取用户基本信息(Senparc.Weixin.MP.dll)
- 【微信】网页授权,获取CODE,OPENID,
- [置顶] 微信网页授权获取code值回调两次的问题
- 微信公共平台接入之:网页授权(微信授权,微信access_token获取,获取微信用户信息),微信开发者工具使用,微信公众平台测试号申请接入
- 微信第三方平台开发授权2:获取component_access_token,pre_auth_code
- 微信——获取用户基本信息及openid 、access_token、code
- 微信开发——网页授权access_token与全局access_token获取用户信息的接口
- 微信网页授权,获取微信code,获取access_tocken,获取用户信息
- 微信开发中网页授权access_token与基础支持的access_token异同 问题1:网页授权access_token与分享的jssdk中的access_token一样吗? 答:不一样。网页授
- 企业微信获取access_token时遇到"errcode":40001的问题的解决
- 微信公众号平台网页授权接口中获取到的授权code传递给(即一个微信公众号网页授权给)任何其他多个回调域名下的url,解决了只能设置一个网页授权回调域名的问题,解决了redirect_uri参数错误的问
- 微信网页授权获取code值回调两次的问题
- 微信开发中网页授权access_token与基础支持的access_token异同
- 微信网页outh2获取code返回Oops! Something went wrong的解决办法
- 01_微信网页授权总结 另:scope参数错误或权限的问题解决
- 微信开发中网页授权access_token与基础支持的access_token异同
- 多个机器获取微信access-token导致的有效性问题
- 获取微信用户openid的三种方法#ACCESS_TOKEN