微信获取openid需要小米打开开发者模式式打开吗

微信公众平台开发(99) 自定义菜单获取OpenID_PHP技巧_
微信公众平台开发(99) 自定义菜单获取OpenID
来源:人气:664
微信公众平台开发(99) 自定义菜单获取OpenID关键字 微信公众平台 自定义菜单 OpenID作者:方倍工作室原文:/txw1958/p/weixin-menu-get-openid.html在这篇微信公众平台开发教程中,我们将介绍如何在自定义菜单中获得用户的OpenID。 本篇开发教程的实质是微信自定义菜单及OAuth2.0授权的灵活运用。本文分为以下两个部分:拥有高级接口权限时的获取(基于view事件)没有高级接口权限时的获取(基于click事件)一、拥有高级接口权限拥有高级接口权限时,我们使用OAuth2.0授权的方式来获取。OAuth2.0的详细设置方法,请参考微信公众平台开发(71)OAuth2.0网页授权在设置好授权回调页面域名之后,我们需要构造菜单,为了方便同时讲解下一小节,我们菜单构造如下{
"button": [
"type": "click",
"name": "图文获取",
"key": "图文"
"type": "view",
"name": "授权获取",
"url": "https://open.weixin..com/connect/oauth2/authorize?appid=wxf7323c&redirect_uri=/oauth2/&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
]}菜单的构成中,核心思想在于url是一个授权回调url,这样才能在菜单点击的时候使用oauth2.0授权获得openid这样将生成两个菜单如下当点击 授权获取的时候,将访问授权页面,页面将使用OAuth2.0的方式获得openid。代码可以参考《微信公众平台开发最佳实践》第72页。跳转后显示如下:二、没有高级接口权限对于没有高级接口权限的账号,就不能使用view事件获得OpenID,需要使用click事件来实现实现原理就是获得接收消息中的FromUserName值,并且在url中构造openid的参数即可在自定义菜单中响应代码如下 1 ivate function receiveEvent($object) 2 { 3
$content = ""; 4
switch ($object-&Event) 5
case "subscribe": 7
$content[] = array("Title"=&"欢迎关注方倍工作室",
"Descrtion"=&"", "PicUrl"=&"li.com/weixin/weather/icon/cartoon.jpg", "Url" =&"/?u=txw1958"); 8 9
case "CLICK":10
switch ($object-&EventKey)11
case "图文":13
$content[] = array("Title"=&"OpenID", "Description"=&"你的OpenID为:".$object-&FromUserName, "PicUrl"=&"", "Url" =&"/?u=txw1958&openid=".$object-&FromUserName);14
if(is_array($content)){19
$result = $this-&transmitNews($object, $content);20
$result = $this-&transmitText($object, $content);22
return $24 }运行后效果如下所示。
优质网站模板之前做了个自定义菜单的click事件,但是订阅号升级为服务号,相应的有了网页的基础授权(需要认证的服务号)
其中使用到了自定义菜单接口:http://mp./wiki/13/43dea6f64413e4dfa94f39.html
网页授权获取用户基本信息接口:http://mp./wiki/17/c0f37d13d5d2c37b468d75.html
一、在接口处获取网页授权,并填写你的域名或ip(域名不需要协议 而是)
二、在自定义菜单出的url写入“第一步:用户同意授权,获取code”的url,并将redirect_uri写成你的VIEW时间点击后需要跳转的路径,如下:
&button&: [
&type&: &click&,
&name&: &图文获取&,
&key&: &图文&
&type&: &view&,
&name&: &授权获取&,
&url&: &https://open./connect/oauth2/authorize?appid=wxf7323c&redirect_uri=http://www.你的网址.com&response_type=code&scope=snsapi_base&state=1#wechat_redirect&
三、在请求成功后返回code并用来获取openid
通过code获取openid的参数如上,即在入口文件中为:
* @desc 向微信接口发送请求
function getJson($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
-------------------------------------------------------------------------------------我是分割线-------------------------------------------------------------------------------------------------
但是有些时候需要页面重定向出下面的效果:
这时候就需要页面重定向:
①判断是否有$_GET['code'],若则将页面重定向到网页授权页面
$now_url ='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];//获取当前url
$judge = preg_match(&/stat/& ,$now_url);//正则判断是否网页授权url
if(!$_SESSION['nowUrl'] && !$judge){ //搜索到oauth2这个词不存在时,证明这个url不是经过处理的
$_SESSION['nowUrl'] = $now_url;
//生成session用于判断
$url = &https://open./connect/oauth2/authorize?appid=wx65bd&redirect_uri=http://xxx&response_type=code&scope=snsapi_base&stat&;
header(&Location:$url&);
② 经过①,页面已重定向到网页授权页面,如果你不在微信打开就会出现:请在微信客户端打开链接,如果在微信打开则如下操作:
if($_SESSION['nowUrl']){
$url = $_SESSION['nowUrl'];
unset($_SESSION['nowUrl']);
header(&Location:$url&);
//销毁session后跳转回去
这样我们就做好了微信网页授权(可避免在微信外打开)-\-\
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16309次
排名:千里之外
原创:49篇
转载:19篇
评论:14条
(7)(8)(8)(3)(6)(6)(11)(3)(2)(1)(12)出处:http://blog.csdn.net
OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享、微信签到、微信商城购物等;
1、高级接口OAuth2.0网页授权设置
a、进入高级接口列表-OAuth2.0-点击修改设置授权域名,域名可以上一级域名和二级域名
b、填写要设置授权域名,我这里用的的是二级域名
体授权Url规则见下面详细描述,主要摘自微信公众平台开发文档,
2、网页授权获取用户基本信息说明
如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(包括昵称、性别、城市、国家)。利用用户信息,可以实现体验优化、用户来源统计、帐号绑定、用户身份鉴权等功能。
请注意,“获取用户基本信息接口是在用户和公众号产生消息交互时,才能根据用户OpenID获取用户基本信息,而网页授权的方式获取用户基本信息,则无需消息交互,只是用户进入到公众号的网页,就可弹出请求用户授权的界面,用户授权后,就可获得其基本信息(此过程甚至不需要用户已经关注公众号。)”
微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。
在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务页中配置授权回调域名。请注意,这里填写的域名不要加http://
关于配置授权回调域名的说明:
授权回调域名配置规范为全域名,比如需要网页授权的域名为:,配置以后此域名下面的页面
都可以进行OAuth2.0鉴权。但
无法进行OAuth2.0鉴权。
具体而言,网页授权流程分为四步:
引导用户进入授权页面同意授权,获取code
通过code换取网页授权access_token(与基础支持中的access_token不同)
如果需要,开发者可以刷新网页授权access_token,避免过期
通过网页授权access_token和openid获取用户基本信息
第一步:用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认带有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
参考链接(请在微信客户端中打开此链接体验)
Scope为snsapi_base
Scope为snsapi_userinfo
公众号的唯一标识
redirect_uri
授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type
返回类型,请填写code
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,
即使在未关注的情况下,只要用户授权,也能获取其信息)
重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
#wechat_redirect
无论直接打开还是做页面302重定向时候,必须带此参数
下图为scope等于snsapi_userinfo时的授权页面:
用户同意授权后
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE
code说明 :
code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
第二步:通过code换取网页授权access_token
首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
获取code后,请求以下链接获取access_token:
公众号的唯一标识
公众号的appsecret
填写第一步获取的code参数
grant_type
填写为authorization_code
正确时返回的JSON数据包如下:
&access_token&:&ACCESS_TOKEN&,
&expires_in&:7200,
&refresh_token&:&REFRESH_TOKEN&,
&openid&:&OPENID&,
&scope&:&SCOPE&
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
用户授权的作用域,使用逗号(,)分隔
错误时微信会返回JSON数据包如下(示例为Code无效错误):
{&errcode&:40029,&errmsg&:&invalid code&}
第三步:刷新access_token(如果需要)
由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token拥有较长的有效期(7天、30天、60天、90天),当refresh_token失效的后,需要用户重新授权。
获取第二步的refresh_token后,请求以下链接获取access_token:
公众号的唯一标识
grant_type
填写为refresh_token
refresh_token
填写通过access_token获取到的refresh_token参数
正确时返回的JSON数据包如下:
&access_token&:&ACCESS_TOKEN&,
&expires_in&:7200,
&refresh_token&:&REFRESH_TOKEN&,
&openid&:&OPENID&,
&scope&:&SCOPE&
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
用户唯一标识
用户授权的作用域,使用逗号(,)分隔
错误时微信会返回JSON数据包如下(示例为Code无效错误):
{&errcode&:40029,&errmsg&:&invalid code&}
第四步:拉取用户信息(需scope为 snsapi_userinfo)
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
http:GET(请使用https协议)
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
用户的唯一标识
返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
正确时返回的JSON数据包如下:
&openid&:& OPENID&,
& nickname&: NICKNAME,
&sex&:&1&,
&province&:&PROVINCE&
&city&:&CITY&,
&country&:&COUNTRY&,
&headimgurl&:
&privilege&:[
&PRIVILEGE1&
&PRIVILEGE2&
用户的唯一标识
用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
用户个人资料填写的省份
普通用户个人资料填写的城市
国家,如中国为CN
headimgurl
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
错误时微信会返回JSON数据包如下(示例为openid无效):
{&errcode&:40003,&errmsg&:& invalid openid &}
附:检验授权凭证(access_token)是否有效
http:GET(请使用https协议)
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
用户的唯一标识
正确的Json返回结果:
{ &errcode&:0,&errmsg&:&ok&}
错误时的Json返回示例:
{ &errcode&:40003,&errmsg&:&invalid openid&}
本人新浪微博:
作者:fuyifang 发表于 19:38:58
阅读:132 评论:0
相关 [微信 公众 开发] 推荐:
- BlogJava-首页技术区
开始微信公众平台的开发,我们首先要了解微信平台可以帮助我们做哪些事情. 使用您的公众账号登陆http://mp./,选择菜单--高级功能-开发模式--查看文档,即能看到微信公众平台目前所能开发的功能. 接受用户发送给您公众账号的消息. 需要特别说明的是,发送消息和回复消失是一个连贯的过程,只能在一个对话中完成.
- CSDN博客互联网推荐文章
随着微信公众平台的开放,微信营销推广也越发受到重视. 现在企业越来越注重求职者是否拥有“微信公众平台接口开发”的经验. 现在参考资料介绍下微信公众平台接口开发模式:. 首先你得有个微信公众平台账号,注册地址:http://mp./. 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:.
- Web前端 - ITeye博客
在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序、MySQL数据库、计算机网络通讯、及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务:. 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.
- BlogJava-首页技术区
位置识别这是实际应用经常应用的消息,特别是很多商家,通过了解用户位置,给用户提供特别的产品或是商场的推荐. 其中用户可能发送两种类型的消息:. 2.路名、标志性建筑或是商场名称. 认识一下,微信地理位置消息,包含一些什么信息. &Label&&![CDATA[位置信息]]&&/Label&.
- BlogJava-首页技术区
1.设置成为开发者模式
登录微信工作平台,选择高级功能-进入开发模式,成为开发者. URL配置的信息是指,微信的后台服务器把您的用户消息发送到该URL处理. Token是你和微信之间的一个密码,用来验证消息是否是从微信的服务发送而来,而不是其他来攻击你的系统. 现在你还不能设置,在设置时微信会GET请求你设置的URL,已检测接口是否可以使用.
- 极客公园-GeekPark
我的知乎/people/luzern
做过三年摄记,现在是互联网产品行业学习者,是传媒圈和IT交叉处的活跃分子. 我的厨房/cook//. [核心提示]建设一个有流量、有效益的微信公众号有哪些需要注意的地方.
- 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
  【导读】此文摘录自知乎上磊友科技联合创始人赵霏(微信号:zhaofei8009)分享的微信HTML5游戏开发测试心得,此前小马哥在两会期间接收访问时曾表示,微信商业化思路很广阔,不要老是盯着游戏看,理论上APP Store上出现的东西微信都可以做. 不过唯有游戏是变现最快,最直接的渠道.   赵霏开发的“手机网页游戏”公共账号为“
duopaogame ”,从一个月前上线至今,已经累计开放了数十款各类型的 HTML5 休闲小游戏.
- CSDN博客Web前端推荐文章
OAuth2.0网页授权这个也是在做微信公众平台用到最多的,可以利用授权接口对自己平台内用户进行绑定,实现用户扫描码和微信分享、微信签到、微信商城购物等;. 1、高级接口OAuth2.0网页授权设置. a、进入高级接口列表-OAuth2.0-点击修改设置授权域名,域名可以上一级域名和二级域名. b、填写要设置授权域名,我这里用的的是二级域名.
- 微博之博
过去的这个周末,应该大部分人都在家里调戏
平台. 有人幸灾乐祸,有人稍作恐慌:芸芸众生相. 注册尝试了一个微信
公众平台,总结一句话:龙生龙,凤生凤. 以前曾经有人说中国的互联网,要么生要么死要么被腾讯. 企鹅家族优良的传统,势必不会放过
微博帝国的3亿用户群的潜在商业价值,所以这次爱起哄的企鹅家族,又一次决定露出起哄天性,悄悄的推出了微信公众平台.
- 行业应用 - ITeye博客
【做微信平台开发需要以下步骤,wx.zip示例可以参考,修改配置即可】. 1.申请一个公众号(订阅号或者服务号). 2.需要有自己的服务器(建议使用花生壳做内网映射). * 检查是否是微信发送的请求. * @param signature 签名. * @param timestamp 时间戳. * @param nonce 随机数.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。相关热词搜索:
上一篇:下一篇:

我要回帖

更多关于 chrome打开开发者模式 的文章

 

随机推荐