微信网页授权——获取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。

原文地址:https://www.cnblogs.com/hou-zheng-qing/p/10909256.html

时间: 2024-12-12 03:48:07

微信网页授权——获取code、access_token、openid,及跨域问题解决的相关文章

微信网页授权获取code链接

本公众号授权 "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_base#wechat_redirect"; 第三方授权(open.weixin.qq.com) "https://open

微信网页授权获取code

<script> (function(){ var code = GetQueryString('code'); if(code){ alert(code) return false; }else{ shouquan(); } function shouquan(){ var redirect_uri = window.location.origin + window.location.pathname; console.log(redirect_uri) var appId = "

微信网页授权获取用户基本信息

微信公众号可以通过微信网页授权机制,来获取用户基本信息,可以用于微信登录功能 关于网页授权的两种scope的区别说明 1.静默授权:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的.用户感知的就是直接进入了回调页(往往是业务页面) 2.显示授权:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的.但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的

微信网页授权获取用户基本信息--PHP

现在就说说怎么通过网页授权获取用户基本信息(国家,省,市,昵称)等. 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用户信息.换到认证的公众账号就正常了! 如果您也遇到这个问题,可以试试在认证的公众账号里测试一下! 感谢大家的支持! 填写授权回调页面的域名 登录公众平台-->开发者中心-->接口权限表 找到 网页授权获取用户基本信息  然后修改-->填写你的域名.如下: 保存即可! ------------

【微信】网页授权,获取CODE,OPENID,

修改微信授权回调域名 1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名.请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头: 授权回调域名配置规范为全域名 2.授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html .http://www.qq.com/login.html 都可以进行OAuth2.0鉴权.但

微信网页授权 通过code获取openid 报错40163 code been used

使用好好的微信功能,突然安卓无法正常使用了,苹果的正常. 安卓报错内容: 40163,code been used. 题外话:微信的东西,为何报英文错误呢,装什么13. 实测结果:安卓获取用户信息时 ,触发了两次请求,而苹果只请求一次. 各种搜索,各种尝试,均无效. 沉下来好好想想,再反复测试, 最终发现问题出在获取用户信息的 时候,同一个code在短时间内使用了两次, public function get_access_token($code){ //基础token // $url = "h

微信网页授权获取用户信息等机制

参考官方文档 https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 1.用户进入授权界面(APP?WeChat) 引导用户打开链接: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=S

微信网页授权-获取用户信息

第一步:修改网页授权安全域名,什么叫安全域名?安全域名就是说只有这个域名的网页才可以安全的进行网页授权以及获取用户信息. 第二步:下载下这个 MP_verify_Sb2ASLINFP09cMn6.txt(点击下载)放到你的服务器根目录下,可以通过你上面配置的域名直接访问的到,即:http://www.zheyue.me/MP_verify_Sb2ASLINFP09cMn6.txt  可以访问的到.点击确认完成. 第三步: 对自己做的网页地址进行包装,引导客户点击新包装的地址即可.例: https

php微信网页授权获取用户信息

配置回调域名: 1. 引导用户进入授权页面同意授权,获取code 2. 通过code换取网页授权access_token(与基础支持中的access_token不同) 3. 如果需要,开发者可以刷新网页授权access_token,避免过期 4. 通过网页授权access_token和openid获取用户基本信息 先自己建立两个文件: index.php  和  getUser.php 代码实例 index.php如下: 1 <?php 2 $appid = "公众号的appid"