微信OAuth2.0网页授权接口

微信OAuth2.0网页授权接口的thinkphp实现版本号。主要实现了oauth网页受权,以及部分其它接口。

用法

为什么用OAuth2.0受权?

通过OAuth2.0受权的网页将会获取到打开者的微信信息。甚至包含微信昵称、头像等实用的数据,开发人员们能够凭此设计出很多其它更丰富的页面应用,比方近期一直非常火爆的红包类活动。除此之外还有个额外的优点,就是能够控制页面在非微信浏览器中无法打开,能够降低代码被人窥窃的风险。

那么红包类活动是怎样使用OAuth2.0受权接口的呢?

1.首先用户打开页面连接(php页面),php接收到请求后将页面跳转到微信的OAuth2.0受权页面,在获取到受权后再次将页面跳转回phpserver;此次跳转中带实用户的各种信息,phpserver记录后返回用户所示页面。

2.然后用户转发此页面,在转发的连接中带有自己的标识參数。当好友点击分享后的连接的时候也会反复第1步的步骤。当phpserver发现从微信OAuth2.0受权返回的数据中的用户数据与标识參数相应的分享者的用户数据不一致的时候,则能够推断出有好友打开了分享页面,给用户添加一个红包。

用法

AuthAction.class.php ---- 认证基类

IndexAction.class.php --- 測试类

index/Conf/config.php --- 设置

wx_appID 微信公众账号的appid

wx_appsecret 微信公众账号的appsecret

weixin_token 微信公众账号接口配置信息的Token

wx_webauth_callback_url OAuth2.0授权后跳转到的默认页面

wx_webauth_expire OAuth2.0授权Token过期时间默认6500

配置好config.php后在微信公号后台设置index.php/Index/wechatInitAuth进行微信API认证,提示"配置成功"后方可使用。

測试公众号申请与详细的測试步骤见下方。

測试

IndexAction.class.php --- 測试类

申请微信測试公众帐号

微信提供測试用的公众账号。此帐号仅仅能加入100个关注者且仅仅有已关注的用户才干够进行OAuth2.0受权。

点此开通測试帐号

1.开通后将appIDappsecretToken填入index/Conf/config.php中。

然后将接口配置信息中的URL改至phpserver,将地址定位到index.php/Index/wechatInitAuth进行微信API认证,直到提示"配置成功"。



2.点击‘体验接口权限表--OAuth2.0网页授权(仅关注者才干授权)’中的改动。将授权回调页面域名改为phpserver地址。直到出现‘通过安全监測’。



配置完微信測试号后,在微信中打开http://项目文件夹/index.php(例:http://121.40.135.90/weixin_auth/index.php)将会在页面中打印出session中的受权数据。表示測试受权成功。

代码结构

在AuthAction中的初始化函数_initialize中进行了OAuth2.0受权,全部基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。

对于同一用户在受权过期时间内多次打开此控制器的页面。将不会进行多次受权,由于其受权信息记录在session中,以免反复受权,减慢訪问速度。受权过期时间在index/Conf/config.phpwx_webauth_expire设置,建议不要大于微信的过期时间7200秒。

注意:

  • 微信OAuth2.0受权分为snsapi_base (不弹出授权页面。直接跳转,仅仅能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,仅仅要用户授权,也能获取其信息),AuthAction.class.php默觉得snsapi_base,并且session中仅仅记录了snsapi_base中的基础数据,如须要snsapi_userinfo请自行改动。

  • 详细的实现方法见代码凝视。

github地址

很多其它教程请訪问:ued.sexy

微博@UED天机

微信OAuth2.0网页授权接口的更多相关文章

  1. 转载:解决微信OAuth2.0网页授权回调域名只能设置一个的问题

    项目地址:https://github.com/HADB/GetWeixinCode 说明:微信项目很多,但是回调域名有限,经常使用,做个笔记. 解决微信OAuth2.0网页授权只能设置一个回调域名的 ...

  2. 解决微信OAuth2.0网页授权回调域名只能设置一个的问题

    https://github.com/HADB/GetWeixinCode GetWeixinCode 解决微信OAuth2.0网页授权回调域名只能设置一个的问题 使用方法 部署get-weixin- ...

  3. 微信OAuth2.0网页授权设置一个域名需多个域名使用的问题

    最近遇到一个问题,一个微信公众号,需要在多个域名上使用OAuth2.0网页授权,但微信OAuth2.0网页授权回调域名只能设置一个. 解决办法: 通过多一次的跳转,解决了微信限制回调域名只能设置一个的 ...

  4. 微信OAuth2.0网页授权

    1.OAuth2.0网页授权 关于网页授权的两种scope的区别说明 1.以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页 ...

  5. 微信OAuth2.0网页授权php示例

    1.配置授权回调页面域名,如 www.aaa.com 2.模拟公众号的第三方网页,fn_system.php <?php if(empty($_SESSION['user'])){ header ...

  6. 微信公众平台开发(71)OAuth2.0网页授权

    微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使 ...

  7. 微信公众平台开发-OAuth2.0网页授权(含源码)

    微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...

  8. 微信公众平台开发(71)OAuth2.0网页授权-摘抄

      微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友 ...

  9. 微信OAuth2.0网页受权php

    www.MyException.Cn 网友分享于:2014-01-19 浏览:2504次 微信OAuth2.0网页授权php示例 1.配置授权回调页面域名,如 www.aaa.com 2.模拟公众号的 ...

随机推荐

  1. 去除img默认的边框

    //当img属性src没有值时,会有难看的边框和难看的一个小图 有什么办法去掉呢? <img  src=" " /> //不要这样写 <img   />  ...

  2. 数据表自增Id获取时IDENTITY的正确使用方式

    在SQLServer中很多表主键会设置为自增列,有的业务需求需要知道新插入的自增Id是多少,一般我们会用SELECT @@IDENTITY来获取,可由于@@IDENTITY是个全局变量作用据较大,所以 ...

  3. Eclipse中JSP生成的类文件存放在哪

    Jsp页面看上去和HTML相似,但它实际上是作为Servlet运行的. 当JSP页面第一次被访问时,web容器解析jsp文件并将其转化为相应的java文件,该文件声明了一个servlet类,该类称为页 ...

  4. 关于Java单例模式中懒汉式和饿汉式的两种类创建方法

    一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...

  5. Python 开发者在迁移到 Go(lang) 时需要知道哪些事?

    [编者按]本文最早由 Repustate 发布,主要介绍将代码迁移至 Go(lang) 时的注意事项.文章系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 这是一篇讲述将大块 Pyth ...

  6. 腾讯云自建MySQL数据库访问

    1. 登陆腾讯云 https://cloud.tencent.com/ 2. 登陆控制台 https://console.cloud.tencent.com/ 3. 选择云主机 4. 选择重装系统 5 ...

  7. guid是否为空的判断

    Guid类型的变量不会为空,初始化没有赋值的GUID应该是00000000-0000-0000-0000-000000000000 . 正确的判断应该是if(Guid testId== Guid.Em ...

  8. oracle 使用绑定变量极大的提升性能

    初始化操作 SQL> alter system flush shared_pool; SQL> set timing on; 1. 未使用绑定变量的时候代码如下 declare type ...

  9. innodb_locks_unsafe_for_binlog分析

    mysql数据库中默认的隔离级别为repeat-read. innodb默认使用了next-gap算法,这种算法结合了index-row锁和gap锁.正因为这样的锁算法,innodb在可重复读这样的默 ...

  10. 转:C# lock用法

    lock 的目的很明确:就是不想让别人使用这段代码,体现在多线程情况下,只允许当前线程执行该代码区域,其他线程等待直到该线程执行结束:这样可以多线程避免同时使用某一方法造成数据混乱. 一般定义如下: ...