知识点
相关文章
更多最近更新
更多微信会员注册开发【带源码】:网页授权,得到code后在当前页面获取openid,js+php实现跨域请求
2019-03-02 01:08|来源: 网路
开发情景:
作者主页:天际app工作室 http://home.zhubajie.com/7145093/
需要引导微信公众平台用户点击链接进入注册页面,在注册页面需要获取用户微信的openid。技术核心是需要借助网页授权,并且在得到授权code时通过js立刻获取openid。
网上关于网页授权后一步步获取openid的文章大多是理论步骤的解说,落实到代码上具体怎么尽可能快的拿到openid的内容很少。笔者十分愤怒,决定写下代码和大家分享
这个过程需要一个前端页面代码和一个后端辅助程序,我这里前端是html+js,后端是php。
直接上代码,代码里注释解释的比较清楚:
前端:index.html
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
- <!-- 天际app工作室 http://home.zhubajie.com/7145093/ -->
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <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">
- <title>会员注册</title>
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript">
- function callback(result) {
- alert('cucess');
- alert(result); //输出openid
- }
- function getQueryString(name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null) return unescape(r[2]); return null;
- }
- var code = getQueryString("code");
- $.ajax({
- async: false,
- url: "http://arvon2012.sinaapp.com/oauth2.php", //这是我的服务端处理文件php的
- type: "GET",
- //下面几行是jsoup,如果去掉下面几行的注释,后端对应的返回结果也要去掉注释
- // dataType: 'jsonp',
- // jsonp: 'callback', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.
- // jsonpCallback:'callback',
- data: {code:code}, //传递本页面获取的code到后台,以便后台获取openid
- timeout: 5000,
- success: function (result) {
- callback(result);
- },
- error: function (jqXHR, textStatus, errorThrown) {
- alert(textStatus);
- }
- });
- </script>
- </head>
- <body>
- </body>
下面是服务端对应的代码,oauth2.php
- <?php
- //天际app工作室 http://home.zhubajie.com/7145093/
- $code = $_GET['code'];//前端传来的code值
- $appid = "xxxxxxxxxxxxxxxx";
- $appsecret = "xxxxxxxxxxxxxxxxxxxxxx";
- //获取openid
- $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
- $result = https_request($url);
- $jsoninfo = json_decode($result, true);
- $openid = $jsoninfo["openid"];//从返回json结果中读出openid
- $callback=$_GET['callback'];
- // echo $callback."({result:'".$openid."'})";
- echo $openid; //把openid 送回前端
- function https_request($url,$data = null){
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- if (!empty($data)){
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- }
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $output = curl_exec($curl);
- curl_close($curl);
- return $output;
- }
- ?>
转自:http://www.cnblogs.com/arvon2012/p/3663840
相关问答
更多-
跟代码啊。。。openid是一直存在的,应该是你哪一步写的不对,值没带过去。。。
-
java 微信二次开发网页授权第一步怎么获取code[2024-03-11]
楼主您好 code是微信那边跳转到页面自动会带的参数 拿我们的例子,定义一个 function getQueryString(name){ var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } 然后直接在页面上 var code = ... -
java开源微信商城系统源码[2021-09-29]
微信官网 有一些简单的实例的 ,注册开发去下载看看 -
下载小程序源码,放到微信开发者工具中,打开显示空白。[2023-05-21]
你这个问题,属于前端源码太老旧造成的。从今年5月份起,微信官方接口就已经升级了,为了用户体验,已经不再支持进入小程序首页弹出授权页面,开发者可以把授权登陆设置为其他功能页面。 由于自己买的盗版源码功能老旧,bug一大堆,功能不完全是小,万一在运营当中遭受财产损失那就不值得了,建议找有实力的第三方开发平台搭建小程序 -
能介绍一下PHP微信开发的流程吗[2023-03-13]
首先就是要先配置好微信服务器的通信,比如token验证之类的,然后才是功能开发,功能开发详见微信公众平台的文档。 -
微信公众平台开发 OAuth2.0网页授权获取用户基本信息[2023-02-09]
在用户没有关注的情况下,还是会产生一个与公众号对应的openid,可以根据这个openid和基础支持的access_token(不是用code换取的access_token)获取到用户的基本信息 用户信息中的subscribe 是为0的,表示没有关注。 -
微网站、微互动、微场景微应用等功能的,微信公众平台二次开发源码哪有好用的?[2022-11-19]
二次开发多费事 有现成的 而且开发都不愿意二次开发 -
微信公众平台二次开发源码哪有好的?[2022-01-19]
好多技术员就靠这个吃饭呢。。小猪cms的挺好哒。 -
微信公众号怎么弄?微信公众号开发源码哪有好用的[2022-05-20]
看下俺们小猪 好多案例的。