laravel php 微信扫码登录
2016-11-11 11:30
721 查看
参考来自 http://www.cnblogs.com/txw1958/p/scan-qrcode-login.html
自己做了微信登录 这个相当于笔记 仅供参考
微信扫码登录需要的数据是微信开放平台!!!
微信扫码登录需要的数据是微信开放平台!!!
微信扫码登录需要的数据是微信开放平台!!!
重要的事说三遍,之前一直用错误数据调试
坑~ ..
直接进入代码阶段
1 生产二维码 有两种方式
第一种方式是点击登录按钮进入一个微信给的的网页,网页内只放二维码 eg https://passport.yhd.com/wechat/login.do
第二种方式是将二维码嵌入网页某个div 脑补下样式 我不贴图了 我下面会用方式二
在需要放二维码的页面引入 http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js 这个JS 然后如下代码
//获取登录二维码
$(document).on("click", ".noname-login", function () {//登录按钮触发事件
$(".layer").removeClass("hide");
var data = {};
var html = template('login-box', data);
var url = '{!!env("APP_URL")!!}logincallback/'+merchant.hash;
var callbackUrl = encodeURIComponent(url);
document.getElementById('layer-box').innerHTML = html;
var timestamp = (new Date()).valueOf();
var state = timestamp+Math.floor(Math.random()*100);
var obj = new WxLogin({//之前的代码是点击按钮之后弹出登录弹框 然后实例化这个类 id表示放这个二维码的div的id
id: "ewimg",
appid: "{{env('WXOPEN_APP_ID')}}",
scope: "snsapi_login",//扫码登录用这个参数 参数固定
redirect_uri: callbackUrl,//扫码之后成功的回调
state: state,//随机数
style: "",
href: ""
});
})
2 编辑回调函数
扫描二维码成功之后 会得到一些参数 先看代码 这个函数我没贴完 只写到最终回去到微信用户数据 之后怎么处理这个数据大家懂得~
public function logincallback(){
$app_id = '***********';
$app_secret = '**********';
//这里需要拼接一个url 获取 access_token
//appid app_secret不做赘述 code为微信服务器返回的code grant_type参数写法固定
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$app_id.'&secret='.$app_secret.'&code='.$_GET['code'].'&grant_type=authorization_code';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
curl_close($ch);
$arr=json_decode($json,1);
//用获取到的access_token调用接口
//拼接URL的参数也不需要赘述了
$url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
curl_close($ch);
$userinfo=json_decode($json,1);
//获取到userinfo 大工告成~
自己做了微信登录 这个相当于笔记 仅供参考
微信扫码登录需要的数据是微信开放平台!!!
微信扫码登录需要的数据是微信开放平台!!!
微信扫码登录需要的数据是微信开放平台!!!
重要的事说三遍,之前一直用错误数据调试
坑~ ..
直接进入代码阶段
1 生产二维码 有两种方式
第一种方式是点击登录按钮进入一个微信给的的网页,网页内只放二维码 eg https://passport.yhd.com/wechat/login.do
第二种方式是将二维码嵌入网页某个div 脑补下样式 我不贴图了 我下面会用方式二
在需要放二维码的页面引入 http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js 这个JS 然后如下代码
//获取登录二维码
$(document).on("click", ".noname-login", function () {//登录按钮触发事件
$(".layer").removeClass("hide");
var data = {};
var html = template('login-box', data);
var url = '{!!env("APP_URL")!!}logincallback/'+merchant.hash;
var callbackUrl = encodeURIComponent(url);
document.getElementById('layer-box').innerHTML = html;
var timestamp = (new Date()).valueOf();
var state = timestamp+Math.floor(Math.random()*100);
var obj = new WxLogin({//之前的代码是点击按钮之后弹出登录弹框 然后实例化这个类 id表示放这个二维码的div的id
id: "ewimg",
appid: "{{env('WXOPEN_APP_ID')}}",
scope: "snsapi_login",//扫码登录用这个参数 参数固定
redirect_uri: callbackUrl,//扫码之后成功的回调
state: state,//随机数
style: "",
href: ""
});
})
2 编辑回调函数
扫描二维码成功之后 会得到一些参数 先看代码 这个函数我没贴完 只写到最终回去到微信用户数据 之后怎么处理这个数据大家懂得~
public function logincallback(){
$app_id = '***********';
$app_secret = '**********';
//这里需要拼接一个url 获取 access_token
//appid app_secret不做赘述 code为微信服务器返回的code grant_type参数写法固定
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$app_id.'&secret='.$app_secret.'&code='.$_GET['code'].'&grant_type=authorization_code';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
curl_close($ch);
$arr=json_decode($json,1);
//用获取到的access_token调用接口
//拼接URL的参数也不需要赘述了
$url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$json = curl_exec($ch);
curl_close($ch);
$userinfo=json_decode($json,1);
//获取到userinfo 大工告成~
相关文章推荐
- php的laravel框架快速集成微信登录的方法
- php的laravel框架快速集成微信登录
- php的laravel框架快速集成微信登录的方法
- php的laravel框架快速集成微信登录
- PHP微信第三方扫码登录技术问题
- php 网站微信登录class
- SSO单点登录的PHP实现方法(Laravel框架)
- PHP TP模板下的微信登录(PC)
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- 微信登录 学习笔记 php
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---登录,该死的登录
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- Laravel5.1 实现第三方登录认证(包括微博、QQ、微信、豆瓣)
- php(ThinkPHP)实现微信小程序的登录过程
- PHP微信授权登录信息
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
- SSO单点登录的PHP实现方法(Laravel框架)
- PHP微信第三方扫码登录技术问题