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

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

oauth网页授权有两种方式:

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

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

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

先来手册里面看下:

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

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

然后我们来创建一个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文件,然后对她进行访问,效果如下所示:

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

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

  1. C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)

    咨询 请加 QQ::QQ群: 在微信里面,非认证的公众号账号,只能通过在微信回复菜单单击等事件获取openid,但是认证的公众账号(之前认证的订阅号是不可以的,现在新开放了政府媒体机构的认证订阅号)可 ...

  2. C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...

  3. C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息二

    前言 这一篇实现snsapi_userinfo,写这篇时其实我是有疑惑的,因为我并没有调试成功,但是我反复检查程序和思路是没有问题的,因为我使用的测试公众号,群里一个伙计说他之前调试时用的也是测试公众 ...

  4. C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一

    前言 微信网页授权共分为两种方式:snsapi_base.snsapi_userinfo. snsapi_base需要关注公众号,获取用户信息时不弹出用户授权界面. snsapi_userinfo是在 ...

  5. 夺命雷公狗---微信开发53----网页授权(oauth2.0)获取用户基本信息接口(3)实现世界留言版

    前面两节课我们讲的是base型的授权了,那么现在我们开始Userinfo型授权, 先来看下我们的原理图 我们这节课来做一个 世界留言版 系统 1..首先我还是在微信测试平台那里设置好回调页面的域名 2 ...

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

    我们在上一节课已经发送code给第三方了,那么这就要获取code去换取到用户的openid. 第一步:编写create_baseurl.php(上一节课程已经写完了) 第二步:编写vote1.php( ...

  7. 夺命雷公狗---微信开发62----所以memcache对access_token进行全局缓存优化

    公众号调用接口并不是无限制的,为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下, 每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到错误信息,造成调用失败. 我们也 ...

  8. 夺命雷公狗---微信开发59----在线点播电影网1之ckplayer播放器

    我们节课程就要开始写一个小项目了,这项目主要是写一个在线点播电影影网的,我们用到的播放器是ckplayer ckplayer基本介绍: ckplayer的全称是:超酷flv播放器,他是一款用于网页上播 ...

  9. 夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

    废话不多说,index.php 代码如下所示: <?php /** * wechat php test */ //define your token require_once "com ...

随机推荐

  1. caption,为表格增加标题和摘要

    格式: <table summary="***"> <caption>***</caption> <tr> </tr> ...

  2. The identity used to sign the executable is no longer valid.

    昨天运行还好好的,今天Xcode突然报这个错误. 在网上搜索了一番,也没有找到合适的解决办法. 那怎么办呢? 于是我就登陆了Appstore的开发者账号,发现里面的证书都是invalid状态,我想应该 ...

  3. busybox sz rz命令

    之前板子和电脑之间传送文件的时候都是通过tftp网络下载.所以找了一下在文件系统中使用串口上传文件的方法. rz和sz命令使用zmoderm协议,SecureCRT也用提供这个命令的支持.由于是串口, ...

  4. Shell数组的增删改查

    Shell数组的增删改查 shell数组的定义及取值: a=(1 2 3) [root@bogon tmp]# echo ${a[*]}  1 2 3 [root@bogon tmp]# echo $ ...

  5. Android 使用Okhttp/Retrofit持久化cookie的简便方式

    首先cookie是什么就不多说了,还是不知道的话推荐看看这篇文章 Cookie/Session机制详解 深入解析Cookie技术 为什么要持久化cookie也不多说了,你能看到这篇文章代表你有这个需求 ...

  6. ava获得当前文件路径

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  7. ionic 白名单

    1.在本目录下执行 cordova plugin add cordova-plugin-whitelist 2.在config.xml里添加 <allow-navigation href=&qu ...

  8. oracle修改sys用户密码

  9. instancetype

  10. protocol(协议)的一些要点

    //遵循协议的变量声明 //要求你创建的PErson对象必须是遵循了 PersonProtocol Person<PersonProtocol> * p2 = [[Person alloc ...