文档章节

微信登录接入

沉淀岁月
 沉淀岁月
发布于 2016/07/18 14:32
字数 276
阅读 33
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

<div id="login_container" style=" display:none; position:absolute; text-align:center; z-index:9999; width:320px; height:400px; background:#fff; "></div>

<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

$('[btn="signWithWechat"]').click(function(){

$('#login_container').css({top:200,left:($(document).width()- 320) /2}).show();

$('#login_container').click(function(){$(this).hide()});

var obj = new WxLogin({

  id:"login_container", 

  appid: "xxxxxx", 

  scope: "snsapi_login", 

  redirect_uri: "<?php echo 'http://xxxxxxx.com' . url('default::public/wechat');?>",

  state: "",

  style: "",

  href: ""

});

});

 

public function actionWechat()

{

$code = $this->_context->code;

 

if(empty($code))

{

return '';

}

 

$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=aaaa&secret=ccccc&code={$code}&grant_type=authorization_code";

$result = Helper_Common::chttpRequest($url,array());

 

$data = json_decode($result);

 

 

$url = "https://api.weixin.qq.com/sns/auth?access_token=".$data->access_token."&openid=" . $data->openid;

 

$result = Helper_Common::chttpRequest($url,array());

$ldata = json_decode($result);

if($ldata->errcode > 0)

{

return $ldata->errmsg;

}

 

$open_id = $data->openid;

 

 

//查询是否存在此用户

$user = User::find('wechat_id=?',$open_id)->query();

if(!$user->id())

{

 

 

//获取个人信息

$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$data->access_token."&openid=" . $data->openid;

$result = Helper_Common::chttpRequest($url,array());

$udata = json_decode($result);

$register_ip = Helper_Utils::getClientIP();

 

$username = 'w_' . $udata->nickname;

//需要创建用户

$user_data = array

(

'username' => $username,

'real_name' => $udata->nickname,

'last_login' => CURRENT_TIMESTAMP,

'register_ip' => $register_ip,

'last_login_ip' => $register_ip,

'email' => CURRENT_TIMESTAMP . '@aaaaa.com',

'password' => mt_rand(100000,999999),

'wechat_id' => $open_id,

'is_other' => 1,

);

 

$user = new User($user_data);

$user->status = User::STATUS_NORMAL;

$role = Role::find('rolename=?','UNCHECKED')->query();

if(!$role->id())

{

throw new QException('未找到相关会员组!');

$user->group_id = 1;

$user->roles = $role['rid'];

$user->save();

 

}

$userinfo = $user->aclData();

//设置为登录状态

$this->_indexchangeCurrentUser($userinfo);

 

return $this->_redirect('http://'.$_SERVER['HTTP_HOST'].url('user/index'));

}

© 著作权归作者所有

沉淀岁月
粉丝 27
博文 257
码字总数 91615
作品 0
朝阳
高级程序员
私信 提问
微信-小程序-开发文档-介绍:客服功能使用指南

ylbtech-微信-小程序-开发文档-介绍:客服功能使用指南 1.返回顶部 1、 客服消息使用指南 为丰富小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷...

osc_kbvhylv9
2019/06/17
1
0
BitAdminCore框架更新日志20180518

20180518更新内容 1、重构调整QQ登录代码,使用JObject,减少代码,增加access_token自动续期(未测试)。 2、重构调整微信登录代码,使用JObject,减少代码,增加access_token自动续期(未测试)...

osc_adbdgnsp
2018/05/18
0
0
Django+wechatpy接入微信公众平台以及授权登录

确定Django环境可以正常运行,环境搭建见:Linux 搭建Nginx+uwsgi+Django环境 安装 wechatpy[cryptography] 修改settings.py 接入微信公众号的连接去掉csrf验证,详情参考:解决Django+Vue前...

lin_zone
2019/04/23
0
0
微信公众号开发小记——3.接入三方登录

为什么要接入三方登录 如果你的微信服务器要做复杂的逻辑,比如html5、给用户提供高级的服务,并且有很好看的页面等等,这种时候你就需要一个正常的web服务器,用户打通就需要做三方登录了。...

D咄咄
2017/11/29
0
0
微信(公众,商户,开放)平台的区别

一.微信开放平台 https://open.weixin.qq.com/ 主要面对移动应用/网站应用开发者,为其提供微信登录、分享、支付等相关权限和服务。 微信开放平台还提供了数据统计功能,用于开发者统计接入应...

osc_arhujamz
2019/07/26
2
0

没有更多内容

加载失败,请刷新页面

加载更多

IDEA安装 IntelliJ IDEA 下载安装与破解教程

IntelliJ IDEA 下载安装与破解教程 一、首先到IDEA官网下载正版的IDEA 网址:https://www.jetbrains.com/idea/download/#section=windows 请直接用下面的链接下载 上面网址加载慢的话可以用这...

osc_u9wft6hh
43分钟前
20
0
mysql执行过程以及顺序

前言:mysql在我们的开发中基本每天都要面对的,作为开发中的数据的来源,mysql承担者存储数据和读写数据的职责。因为学习和了解mysql是至关重要的,那么当我们在客户端发起一个sql到出现详细的查...

osc_r2jpynxi
43分钟前
20
0
去阿里,是不可能的,这辈子都不可能的

前几天,又有一个朋友邀请我去阿里,然后,,,,,我不假思索地就拒绝了。 因为说实话,阿里的修福报文化不适合我——不小心又装逼了。主要是感觉自己的学历配不上进大厂,就一个大专而已。...

osc_7nzqlmki
45分钟前
15
0
IDEA安装 IntelliJ IDEA 下载安装与破解教程

IntelliJ IDEA 下载安装与破解教程 一、首先到IDEA官网下载正版的IDEA 网址:https://www.jetbrains.com/idea/download/#section=windows 请直接用下面的链接下载 上面网址加载慢的话可以用这...

osc_wy8nhxhn
46分钟前
15
0
如何使用Lock?Lock 与synchronized 区别是什么?

Lock 就像同步块一样, java.util.concurrent.locks.Lock是线程同步机制。但是,锁比同步块更灵活,更复杂。由于Lock是接口,因此需要使用其实现之一在应用程序中使用Lock。 ReentrantLock是...

极客编程111
47分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部