设为首页 加入收藏

TOP

(二)网页授权获取用户基本信息(一)
2017-10-10 10:09:42 】 浏览:10086
Tags:网页 授权 获取 用户 基本 信息

在公众号的配置过程中,许多开发者会在菜单中加入HTML5页面,有时在页面内需要访问页面的用户信息,此时就需要网页授权获取用户基本信息

PS:本博文所阐述的微信开发基于Yii2.0框架

 

1、设置授权回调域名:开发 ---> 接口权限

  找到“网页授权获取用户基本信息”,点击后面对应的“修改”,在弹框响应位置填写授权回调域名即可,此处的域名不需要加http://  (关于网页授权回调域名的说明详情可参考公众平台开发者文档)

 

 

2、获取授权

  关于OAuth2.0博主参考的是方倍工作室的博文http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html(PS:方倍是一个微信开发大神,其中的微信开发内容还是比较详细的,推荐参考),其中详细剖析了微信官方文档的相关内容,也提供了获取授权的更详细思路和方案。

  实际上,获取用户信息的关键在于获取用户的openid。博主想要实现用户点击公众号菜单打开页面即可自动授权,从而针对该用户进行数据库操作,于是有下面两种方式: 

  (1)利用自定义菜单请求授权页面

    自定义菜单后面会单独写一篇博文,在这里先简述一下通过自定义菜单进行授权,该方法需要高级接口权限,且局限于关注公众号的用户直接从菜单进入页面。

 1 $menu = '{
 2   "button":[
 3     {
 4       "type": "view",
 5       "name": "商城",
 6       "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=http://tx.heivr.com/index.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
 7     },
 8 
 9     {
10       "name":"快递服务",
11       "sub_button":[
12         {
13            "type":"click",
14            "name":"发快递",
15            "key":"express"
16         },
17         {
18            "type":"click",
19            "name":"快递查询",
20            "key":"ww"
21         }
22       ]
23     },
24   ]
25 }';

  需要授权的view直接在url处填写微信提供的授权请求地址,其中:

  • appid:填写微信公众平台基本配置中的AppID;
  • redirect_uri:填写授权完成后跳转的页面地址,即自己的html5页面;
  • state:跳转至回调页面所带参数;
  • response_type:网页授权的两种scope,微信官方文档中说明如下:
    1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
    2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

    按照此方法点击“商城”即可接收到返回的openid,继而进行下一步用户信息的获取。 

 

  (2)利用JS自动请求授权页面

    这个方法相对而言比较笨拙,步骤略复杂,但目前能解决需求还没有研究简化方法,且由于页面的跳转多数情况下访问页面的时间会增加,但相比于前一个方法,该方法可以获取到非关注用户的基本信息。有些程序可能涉及到页面分享,程序没有强制关注但其他用户通过分享直接进入页面也需要记录用户信息,此时可以考虑该方法。(微信开发相关的代码博主封装成工具类调用,这里先贴用到的部分,以后整理完成会全部贴出来并附下载链接)

    该方法的思路为:js请求链接获取code ---> 利用code换取openid ---> 得到用户基本信息

        a. 编辑配置

        为了方便把用到的一些微信参数单独写入一个类,方便修改添加及调用

 1 <?php
 2 namespace common\tools\wechat;
 3 
 4 /**
 5  * 微信请求相关配置类库
 6  */
 7 class ConfigTool {
 8 
 9     /**
10      * 微信配置参数
11      * @return array 配置参数
12      */
13     public function setConfig() {
14 
15         // 用于验证微信接口配置信息的Token,可以任意填写
16         $config['token'] = '自己的token';
17          
18         // appID
19         $config['appid'] = '自己的appid';
20          
21         // appSecret
22         $config['secret'] = '自己的secret';
23          
24         // 回调链接地址
25         $config['redirect_uri'] = 'http://tx.heivr.com/index.php?';
26          
27         // 是否以 HTTPS 安全协议访问接口
28         $config['https_request'] = false;
29          
30         // 授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),
31         // snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,
32         // 即使在未关注的情况下,只要用户授权,也能获取其信息)
33         $config['scope'] = 'snsapi_userinfo';
34          
35         // 语言
36         $config['lang'] = 'zh_CN'; // zh_CN 简体,zh_TW 繁体,en 英语
37          
38         // 微信公众账户授权地址
39         $config['mp_authorize_url'] = 'https://api.weixin.qq.com/cgi-bin/token';
40         // 微信公众账户js临时票据地址
41         $config['jsapi_ticket_url'] = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket';
42         // 授权地址
43         $config['authorize_url'] = 'https://open.weixin.qq.com/connect/oauth2/authoriz
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇linux 环境下安装mysql5.6 下一篇HTTP状态管理机制之Cookie

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目