首先在微信开发文档中有提到微信网页授权的操作步骤:

第一步:用户同意授权,获取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、access_token、openid,及跨域问题解决的更多相关文章

  1. 微信网页授权获取code链接

    本公众号授权 "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&r ...

  2. 微信网页授权获取code

    <script> var code = GetQueryString('code'); var callback = 'personal.html'; var appId = " ...

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

    现在就说说怎么通过网页授权获取用户基本信息(国家,省,市,昵称)等. 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用 ...

  4. 微信网页授权+获取用户基本信息+强制关注+JSSDK分享参数

    网页授权+获取用户基本信息+强制关注+JSSDK分享参数 //支付宝红包口令列表 public function view(){ $openid = ""; Vendor('Wei ...

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

    使用好好的微信功能,突然安卓无法正常使用了,苹果的正常. 安卓报错内容: 40163,code been used. 题外话:微信的东西,为何报英文错误呢,装什么13. 实测结果:安卓获取用户信息时 ...

  6. 微信网页授权获取用户openid及用户信息

    $code = $_GET["code"];//获取code $appid=“xxxx”;//公众号appid $APPSECRET="xxx";//公众号ap ...

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

    配置回调域名: 1. 引导用户进入授权页面同意授权,获取code 2. 通过code换取网页授权access_token(与基础支持中的access_token不同) 3. 如果需要,开发者可以刷新网 ...

  8. 微信 网页授权获取用户基本信息(OAuth 2.0)

    // 相关设置 $APPID = ""; $AppSecret = ""; $html = ""; // 拼接 URL // 跳转该连接 获 ...

  9. MVC 微信网页授权 获取 OpenId

    最近开发微信公众平台,做下记录,以前也开发过,这次开发又给忘了,搞了半天,还是做个笔记为好. 注意框架为MVC 开发微信公众平台.场景为,在模板页中获取用户openid,想要进行验证的页面,集成模板页 ...

  10. 微信网页授权报code been used, hints: [ req_id: XYv1Ha07042046 ]

    先贴上代码: public function index() { $code = input('get.code'); $tool = new Wxtool(); if (empty($code)) ...

随机推荐

  1. vuexy full-wersion项目安装报错问题处理

    npm install grpc@1.23.3 --ignore-scripts npm rebuild node-sass

  2. [CSS]使用JS改变元素位置,操作css比较困难时,可更换元素的类名

    本人大菜鸟一枚,以此作为记录. 使用到技术栈jQuery. 开发中遇到某个元素需要在页面上切换 left: 0px 为 right: 0px 的需求,直接操作css会导致同时存在left和right属 ...

  3. JavaSE——面向对象(类与对象)

    package com.zhao.test1; public class GirlFriend { //属性 String name; int age; String gender; //行为 pub ...

  4. 上传镜像到harbor

    https://blog.csdn.net/weixin_45335305/article/details/123817541

  5. Linux 使用ssh服务管理远程主机

    配置网络服务 配置网卡的4种方法: 创建网络会话 RHEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态.可以使用 ...

  6. 2.常用Dos命令

    #盘符切换 D:   C:#查看当前目录下的所有文件 dir#切换目录 cd change directory    #切换盘cd /d D:切换到D盘    #cd..返回上一级# 清理屏幕  CL ...

  7. windows安装kafka

    1.软件下载 kafka运行需要有jdk+zookeeper环境才能够使用,官网下载 https://www.apache.org/dyn/closer.cgi/zookeeper/ http://k ...

  8. 入库大文件csv文件

    LOAD DATA LOCAL INFILE 'D:\\ss\\chongzhi\\T_RORD.csv' INTO TABLE cz_T_RECHARGE_SET_RECORDFIELDS TERM ...

  9. loadrunner 11

    1  环境windows server 2012  2019 的.net 时, 服务器管理器--仪表板--勾选.net后报错? 其中一个办法就是将服务器临时联网,就能安装成功. 2   联机时 提示如 ...

  10. mac下eclipse关联svn插件

    由于新冠状病毒的疫情这一周都需要在家办公了,家里只有一个mac之前只是娱乐工具,今天不得不用它撸代码,无奈重新安装各种环境,mac和windows的环境安装区别还是很大的,今天差点折磨死我,尤其是在e ...