1.必须配置回调函数(在微信开发者管理中)

2.用户授权并获取code

在域名(前面配置的回调域名)根目录下,新建一个文件,命名为oauth.php(名字随便你取,下面的redirect_uri做相应修改即可)

url: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3baef8c48cce7fb3&redirect_uri=http%3a%2f%2fh5.tybxkj.cc%2foauth.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

3.使用code换取access_token

利用get请求函数访问url

https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx3baef8c48cce7fb3&secret=4ca91b29cf3370b2ad311565344b598a&code=$coded&grant_type=authorization_code

4.通过access_token、openid获取用户信息

url: https://api.weixin.qq.com/sns/userinfo?access_token=$acctke&openid=$appid

5.通过单击菜单带参数(state)判断用户跳转链接

查询数据库中有无注册记录

$pdcz = $db->get_one("select * from destoon_member where destoon_member.oppid=‘$appid‘");

有则直接登陆

$names = $pdcz[‘username‘];

$pasmd = $pdcz[‘password‘].$pdcz[‘passsalt‘];

$do = new member;

$user = $do->login($names,$pasmd,86300*30,true); //调用框架内部登陆

// 重定向

if($user){

header("Location: http://h5.tybxkj.cc/mobile/news/");

}

无则注册并登陆

$do = new member;

$data[‘regid‘] = ‘5‘;

$data[‘company‘] = null;

$data[‘username‘] = $nameu;

$data[‘password‘] = $pass;

$data[‘cpassword‘] = $pass;

$data[‘passport‘] = $nameu;

$data[‘truename‘] = $truenme;

$data[‘groupid‘] = ‘5‘;

$data[‘catids‘] = ‘111‘;

$data[‘catid‘] = ‘2‘;

$data[‘banner‘] = ‘11‘;

$data[‘thumb‘] =‘111‘ ;

$data[‘introduce‘] = ‘22‘;

$data[‘content‘] = ‘333‘;

$data[‘edittime‘] = 0;

$data[‘inviter‘] = ‘1111‘;

$data[‘oppid‘] = $appid;

$data[‘wxhead‘] = $imgtx;

$user = $do->add($data); //注册方法

if($user){

$goa = $do->login($data[‘username‘],$data[‘password‘],86300*30,true);

if($goa){

header("Location: http://h5.tybxkj.cc/mobile/news/"); //重定向

}

}

6.参考函数

//get请求

function curl_get_https($url){

$curl = curl_init(); // 启动一个CURL会话

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在

$tmpInfo = curl_exec($curl); //返回api的json对象

//关闭URL请求

curl_close($curl);

return $tmpInfo; //返回json对象

}

代码部分

require ‘common.inc.php‘;

$module ="member";

require DT_ROOT.‘/module/‘.$module.‘/common.inc.php‘;

require DT_ROOT.‘/include/post.func.php‘;

require DT_ROOT.‘/module/‘.$module.‘/member.class.php‘;

$coded=$_GET[‘code‘];

$statea=intval($_GET[‘state‘]); //获取到code和state参数

$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx3baef8c48cce7fb3&secret=4ca91b29cf3370b2ad311565344b598a&code=$coded&grant_type=authorization_code";

$json = curl_get_https($url); //获取access_token和apenid

$arre = json_decode($json,true);

$acctke = $arre[‘access_token‘];

$appid = $arre[‘openid‘]; //opid

$urlto = "https://api.weixin.qq.com/sns/userinfo?access_token=$acctke&openid=$appid"; //获取用户信息

$jsonto = curl_get_https($urlto);

$arreto = json_decode($jsonto,true);

$truenme = $arreto[‘nickname‘]; // 用户昵称

$imgtx = $arreto[‘headimgurl‘]; // 头像

if ($statea===1){

$pdcza = $db->get_one("select * from destoon_member where destoon_member.oppid=‘$appid‘");

if($pdcza){

$namesa = $pdcza[‘username‘];

$pasmda = $pdcza[‘password‘].$pdcza[‘passsalt‘];

$do = new member;

$user = $do->login($namesa,$pasmda,86300*30, true);

// 重定向

header("Location: http://h5.tybxkj.cc/mobile/news/");

}else{

$datac = inParaMeter($appid,$truenme,$imgtx);

$do = new member;

$usera = $do->add($datac);

$goaa = $do->login($datac[‘username‘],$datac[‘password‘],86300*30,true);

header("Location: http://h5.tybxkj.cc/mobile/news/");

}

}

if ($statea===2){

$pdczb = $db->get_one("select * from destoon_member where destoon_member.oppid=‘$appid‘");

if($pdczb){

$namesb = $pdczb[‘username‘];

$pasdfb = $pdczb[‘password‘].$pdczb[‘passsalt‘];

$do = new member;

$user = $do->login($namesb,$pasdfb,86300*30,true);

// 重定向

header("Location: http://h5.tybxkj.cc/mobile/member/map.php");

}else{

$datac = inParaMeter($appid,$truenme,$imgtx);

$do = new member;

$userb = $do->add($datac);

$goab = $do->login($datac[‘username‘],$datac[‘password‘],86300*30,true);

header("Location: http://h5.tybxkj.cc/mobile/member/map.php");

}

}

if ($statea===3){

$pdczc = $db->get_one("select * from destoon_member where destoon_member.oppid=‘$appid‘");

if($pdczc){

$namesc = $pdczc[‘username‘];

$pasdfc = $pdczc[‘password‘].$pdczc[‘passsalt‘];

$do = new member;

$user = $do->login($namesc,$pasdfc,86300*30,true);

// 重定向

header("Location: http://h5.tybxkj.cc/mobile/company/");

}else{

$datac = inParaMeter($appid,$truenme,$imgtx);

$do = new member;

$userc = $do->add($datac);

$goac = $do->login($datac[‘username‘],$datac[‘password‘],86300*30,true);

header("Location: http://h5.tybxkj.cc/mobile/company/");

}

}

//传入参数

function inParaMeter($appid,$truenme,$imgtx){

$wxxas = mt_rand(10000,999999);

$nameu = ‘wx‘.$wxxas; // 随机用户名

$randpas = mt_rand(10000,999999);

$randeps = mt_rand(10000,999999);

$passwordmdf = $randpas.$randeps; // 密码

$do = new member;

$datac = array();

$datac[‘regid‘] = ‘5‘;

$datac[‘company‘] = null;

$datac[‘username‘] = $nameu;

$datac[‘password‘] = $passwordmdf;

$datac[‘cpassword‘] = $passwordmdf;

$datac[‘passport‘] = $nameu;

$datac[‘truename‘] = $truenme;

$datac[‘groupid‘] = ‘5‘;

$datac[‘catids‘] = ‘111‘;

$datac[‘catid‘] = ‘2‘;

$datac[‘banner‘] = ‘11‘;

$datac[‘thumb‘] =‘111‘ ;

$datac[‘introduce‘] = ‘22‘;

$datac[‘content‘] = ‘333‘;

$datac[‘edittime‘] = 0;

$datac[‘inviter‘] = ‘1111‘;

$datac[‘oppid‘] = $appid;

$datac[‘wxhead‘] = $imgtx;

return $datac;

}

//get请求

function curl_get_https($url){

$curl = curl_init(); // 启动一个CURL会话

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在

$tmpInfo = curl_exec($curl); //返回api的json对象

//关闭URL请求

curl_close($curl);

return $tmpInfo; //返回json对象

}

?>

原文:https://www.cnblogs.com/coderj/p/9437739.html

ajax json destoon,destoon框架中的微信自动登陆相关推荐

  1. ajax校验的优点,django框架中ajax的使用及避开CSRF 验证的方式详解

    本文实例讲述了django框架中ajax的使用及避开CSRF 验证的方式.分享给大家供大家参考,具体如下: ajax(Asynchronous Javascript And Xml) 异步javasc ...

  2. php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...

    1.通过curl发送json格式的数据,譬如代码: function http_post_json($url, $jsonStr) { $ch = curl_init(); curl_setopt($ ...

  3. 在ASP.NET AJAX 1.0框架中访问Web服务

    一. 简介     如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...

  4. php ci post 请求,CI框架中判断post,ajax,get请求的方法

    这篇文章主要介绍了关于CI框架中判断post,ajax,get请求的方法 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CI框架当中并没有提供,类似tp框架中IS_POST,IS_A ...

  5. jsp怎么接受ajax请求参数,通过ajax发送JSON并通过JSP中的请求获取参数

    我需要通过ajax(使用Jquery)发送JSON对象,并通过JSP(服务器端)中的请求对象获取所有参数.通过ajax发送JSON并通过JSP中的请求获取参数 我的JS代码: var request ...

  6. ci如何使用中$.ajax 中的 url 如何使用php的代码,CI框架中使用ajax操作数据库有关问题...

    CI框架中使用ajax操作数据库问题 本帖最后由 A9925 于 2014-11-24 16:11:05 编辑 前台: //调用方法用ajax操作add_dbdata.php var xmlHttp ...

  7. TP框架中ajax post请求时提示404

    ajax post请求时提示404错误 TP框架中ajax post请求时提示404 找了半天是 控制器中方法有错误! 下次再遇到去控制器方法中找一步一步找,肯定能找到,我是单词拼错了! 转载于:ht ...

  8. ajax+php+jq+面向对象,php+jquery+ajax+json的一个最简单实例

    html页面: $(function(){ $("#send").click(function(){ var cont = $("input").seriali ...

  9. C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...

  10. mpvue 微信小程序api_第三方框架与原生微信小程序开发框架性能之比较 | Q荐读...

    作者 | 崔红保编辑 | 王莹 自 2017年1月9日微信小程序诞生以来,历经 2 年多的迭代升级,已有数百万小程序上线,成为继 Web.iOS.Android 之后,第四大主流开发技术. 与之相随, ...

最新文章

  1. RNA-seq分析流程
  2. dual orcal 虚拟表
  3. Python入门100题 | 第042题
  4. php学历低,学历低学起php来难不难
  5. ci php做记录删除,PHP CI APC 使用记录
  6. python sklearn: 模型(如 SVM,PCA等)的保存与加载调用
  7. event.srcElement 与event.target
  8. LeetCode10 Regular Expression Matching
  9. iconv字符编码转换
  10. 如何用安卓手机做代理服务器
  11. 预充电电路工作原理_课堂 | 为什么锂电池在充电过程中首先要进行预充电
  12. Jetson开发实战记录(三):Jetson Xavier NX具体开发(Ubuntu18.04系统)
  13. pytorch detach用法
  14. 51单片机计数器c语言编程,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
  15. 11款惊艳的HTML5粒子动画特效
  16. 《Python深度学习》3.4电影评论分类:二分类问题
  17. Oracle11g下载安装教程
  18. java百元买百兔 穷举法_JAVA--算法与数据结构- 逢7过百钱白鸡不死神兔【1/100】...
  19. 简单几步:图解——VS2012发布网站详细步骤
  20. 未来的趋势—电子签约流行

热门文章

  1. LocalDateTime类对时间的处理
  2. Unity3D “xx AnimationEvent has no function name specified!”解决方案
  3. banner图片通用设置
  4. 从业17年,聊聊关于测试这件事
  5. 廊坊金彩教育:怎么做主图
  6. Python学习日记04
  7. 手机扫描二维码,下载apk
  8. 监督学习、无监督学习、强化学习的区别
  9. 爬取微博视频页并批量下载python+requests+ffmpeg(连接视频和音频)
  10. windows(微软知识库)可以根据事件ID查看 各种事件