夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑。

一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可以访问这些网页

oauth网页授权有两种方式:

1.base(基本型)用户可直接通过链接访问,相应的微信公众号只能获取用户的openid,无法获取到其他信息。

2.Userinfo(用户信息型),访问时候会弹出授权页面,同意后微信公众账号可以获取用户其他信息,比如昵称头像,性别,地址等

base型授权流程原理分析,(这里很重要噢)。。

先来手册里面看下:

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

主要是分为4步走,如果还是不懂可以通过观看下图即可:

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

我们开始配置好授权页面的域名,注意这里填写的是域名,而且不要带http://,可以简单的理解成就是第三放网站所在的域名,如下图所示:

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

然后我们来创建一个create_baseurl.php的文件,代码如下所示:

<?php
header("Content-Type:text/html;charset=utf-8");
require_once "get_token.php";
require_once "common.php"; //公众号的appid
$appid = "wxed89d8f74fa6fc51";
//回调url,也就是第三方页面
$base_redirect_uri = "http://weixin.showtp.com/vote1.php";
$base_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$base_redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
echo "您发送的值是:{$base_url}<br />"; //这里可以写得更人性化一点,通过表单post过来即可
$contentStr = $base_url;
//因为是测试蓄意将openid写死了
$fromUsername = 'oB1_6tzeHj-KG7kL8Thmu6VcF2BM';
//因为可能会存在中文所以需要url编码
$contentStr = urlencode($contentStr);
//到时候我们我发送的内容我们放到一个数组里面去了
$content_arr = array('content'=>"{$contentStr}");
//这里的意思是将来我要发送消息给这个用户
$reply_arr = array('touser'=>"{$fromUsername}",'msgtype'=>'text','text'=>$content_arr);
//下一步就是将编码转成规定的json格式
$post = json_encode($reply_arr);
//url解码,如果不解码他将会发来一段二进制代码
$post = urldecode($post);
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}";
//处理好了直接发送
http_request($url,$post); echo "发送成功咯";

然后创建一个vote1.php的文件,主要是测试下看过他是否能跳转,代码如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>你最喜欢那个类型的女人</title>
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<link href="./jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
<script src="./jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="./jquery.mobile-1.0.min.js" type="text/javascript"></script>
</head>
<body>
<div data-role="page" id="page3">
<div data-role="header">
<h1>你最喜欢那个类型的女人</h1>
</div>
<div data-role="content">
<form action="#" method="get" data-ajax="false" >
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<legend>你最喜欢那个类型的女人</legend>
<input type="radio" name="radio1" id="radio1_0" value="温柔" />
<label for="radio1_0">温柔</label>
<input type="radio" name="radio1" id="radio1_1" value="开朗" />
<label for="radio1_1">开朗</label>
<input type="radio" name="radio1" id="radio1_2" value="拨辣" />
<label for="radio1_2">拨辣</label>
<input type="radio" name="radio1" id="radio1_3" value="文静" />
<label for="radio1_3">文静</label>
</fieldset>
</div>
<div class="ui-block-a">
<button type="submit" data-role="button" >点击提交</button>
</div>
</div>
</div>
</form>
</body>
</html>

然后在浏览器上打开create_baseurl.php文件,然后对她进行访问,效果如下所示:

夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

然后手机端将会收到一条链接,点击那条链接进入vote1.php如果能成功跳转,那么恭喜您,您已经成功了一大半部分咯,嘻嘻

上一篇:php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)


下一篇:java-当对象碰到边界时,如何更改对象的大小?