微信微信官方账号点击菜单打开登录微站实现方式
本文描述了微信微信官方账号通过点击菜单打开登录微站的实现方法。分享给大家参考。具体分析如下:
一般来说,微信微信官方账号可以通过点击菜单打开并登录微站。然而,许多微型站被用于它们自己的目的。本文对此进行了总结,相信能给大家带来一定的参考价值。
目前大多数微站点都是通过用户的微信openid自动登录。在我之前的开发中,用户点击了一个菜单,微信官方账号返回了图片和文字。只有当用户点击了这个图片和文字,用户才能自动登录微站。但是如果有高级界面,可以点击菜单,打开网页得到这个openid,实现自动登录。这里已经提到,你必须拥有高级接口(服务号、企业号)的权限,这就开启了开发者模式。
1.设置回拨地址
在微信公众平台后台“开发者中心”的“高级界面”下找到“OAuth2.0网页授权”,后面还有一个“修改”。点击后会弹出填写回拨地址的对话框。请点击此处了解如何授权。这个地方的“修改”只有在获得高级界面权限后才能出现。注意这里填写的是域名,不是带的URL,说明中明确“授权回调域名的配置规范是全域名”,也就是说,带www和不带是两个不同的域名。因此,我想填写下图中的域名。
2.创建菜单
创建菜单可以通过你的微站后台创建,如果没有开启开发者模式,也可以通过微信公众平台后台创建。菜单使用点击打开链接的模式,也就是视角模式。如果你是使用开发者模式,通过向微信提交如下代码,即可创建公众号菜单(开发者文档):复制代码代码如下: { ' button ' : [{ ' type ' : ' view ',' name': '登录微站,' URL ' : ' https://打开。微信。QQ。com/connect/oauth 2/authorize?appid={ 0在微信公众平台后台获取这个APPID }重定向_ uri={你填写的回调域名下的地址} response _ type=代码范围=snsapi _ base state=1 #微信_重定向' }]}代码一要提交的菜单代码,下面要用到APPID的获取位置就是上面你填写回调地址的那个"开发者中心"。下面我们用服务器端编程语言(专业超文本预处理器的缩写)来实现一下菜单提交:复制代码代码如下:phpffunction curl _ info($ appid,$ secret){ $ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,' https://API . weixin . QQ.com/CGI-bin/token?grant _ type=client _ credential appid=' .$appid .秘密=' .$ secret);curl_setopt($ch,CURLOPT_CUSTOMREQUEST,' GET ');curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_USERAGENT ',Mozilla/5.0(兼容;MSIE 5.01 windows NT 5.0)');curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT _ AUTOREFERER,1);//curl_setopt($ch,CURLOPT_POSTFIELDS,$ data);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$ TMPinfo=curl _ exec($ ch);if (curl_errno($ch)) { echo 'Errno ' .curl _ error($ ch);} curl _ close($ ch);$arr=json_decode($tmpInfo,true);返回$ arr}函数curl_menu($ACCESS_TOKEN,$ data){ $ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,' https://API . weixin . QQ.com/CGI-bin/menu/create?access_token=' .$ ACCESS _ TOKEN);curl_setopt($ch,CURLOPT_CUSTOMREQUEST,' POST ');curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_USERAGENT ',Mozilla/5.0(兼容;MSIE 5.01 windows NT 5.0)');curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT _ AUTOREFERER,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$ data);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$ TMPinfo=curl _ exec($ ch);if (curl_errno($ch)) { echo 'Errno ' .curl _ error($ ch);} curl _ close($ ch);$arr=json_decode($tmpInfo,true);返回$ arr}函数creat _ menu(){ $ ACCESS _ LIST=curl _ info(APP _ ID,APP _ SCR);//获取到的凭证,你需要自己定义应用程序标识和APP_SCR(应用密钥),这个也是在微信公众平台后台开发者中心找if($ ACCESS _ LIST[' ACCESS _ token ']!=' '){ $ ACCESS _ token=$ ACCESS _ LIST[' ACCESS _ token '];//获取到ACCESS_TOKEN $data='把上面代码一拷贝黏贴在这里;$msg=curl_menu($access_token,preg _ replace(' u([0-9a-f])# ie ',' iconv('UCS-2 ',' UTF-8 ',pack('H4 ',' 1 '),$ data));if($msg['errmsg']=='ok') { die('创建自定义菜单成功!');} else { die('创建自定义菜单失败!');} } else { die('创建失败,微信AppId或微信应用秘密填写错误');} } create _ menu();代码2用服务器端编程语言(专业超文本预处理器的缩写)来创建微信公众号菜单
代码2其实有点冗余了,核心部分用红色标出来了。就这样,你的微信公众号中应该很快就可以看到创建了一个"登录微站"的菜单。点击这个菜单就可以实现登录微站了。如果你不需要PHP,可以直接在微信公众平台后台的菜单自定义中写链接就可以了。
在上图中的这个地方,选择打开链接的方式创建菜单好吧,接下来把上面那个链接放进去:
https://open.weixin.qq.com/connect/oauth2/authorize?appid={ 0在微信公众平台后台获取这个APPID }重定向_ uri={你填写的回调域名下的地址} response _ type=代码范围=SNS API _ base状态=1 #微信_重定向
创建菜单就可以了。当然,你也有可能只需要在你自己的微信管理后台加入这个链接就可以了。
3.在回调页获取openid
仔细看,你可能发现上面的链接地址包含参数scope=snsapi_base而不是scope=snsapi_userinfo,因为前者不需要用户点击授权按钮直接跳转到回调页面,而后者需要点击授权按钮,但是点击授权按钮有优势。一是可以不关注微信官方账号进行授权,二是授权后可以获取用户的一些信息,如昵称、性别等。但是我们想用openid登录,所以可以直接选择前者。
点击菜单后,会跳转到你经过微信授权处理后提交的回拨地址(这里需要提醒你,回拨地址不要带参数,比如xxx/?Callback=from_weixin,因为微信用参数跳转到你的回调地址,而这个参数正是你需要的。微信跳转到以下网址:回拨地址/?代码=代码状态=1
上面的code可以通过$_GET['code']获得一个CODE值,openid和access_token可以通过使用这个CODE值和appid获得。然后用PHP实现如下:复制代码如下: if($ _ get[' code ']){ $ code=$ _ get[' code '];$ data=get _ by _ curl(' https://API . weixin . QQ.com/SNS/oauth 2/access _ token?appid=APPIDsecret=APPSRCcode='。$代码。grant _ type=authorization _ code’);$ data=JSON _ decode($ data);$ OpenID=$ data-OpenID;$ access _ token=$ data-access _ token;}函数get_by_curl($url,$ post=false){ $ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,$ URL);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);if($post){ curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$ post);} $ result=curl _ exec($ ch);curl _ close($ ch);返回$ result}这样就可以获得openid和access_token。通过使用这些值,我们还可以使用微信公众平台的api接口获取用户的基本信息。
希望本文对基于PHP的微信微信官方账号的开发有所帮助。
版权声明:微信微信官方账号点击菜单打开登录微站实现方式是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















