微信第三方登录php开发文档,TP框架实现第三方登录--微信登录

封装CURL工具包

未上传

实现微信登录

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller {

//获取code根地址

const GET_CODE_URL = 'https://open.weixin.qq.com/connect/qrconnect';

//通过code获取access_token根地址

const GET_ACCESS_TOKEN_URL = 'https://api.weixin.qq.com/sns/oauth2/access_token';

//刷新或续期access_token使用根地址

const REFRESH_ACCESS_TOKEN_URL = 'https://api.weixin.qq.com/sns/oauth2/refresh_token';

//检验授权凭证(access_token)是否有效根地址

const TEST_ACCESS_TOKEN_URL = 'https://api.weixin.qq.com/sns/auth';

//获取用户个人信息(UnionID机制)根地址

const GET_USERINFO_URL = 'https://api.weixin.qq.com/sns/userinfo';

public $urlUtil;

public function __construct(){

parent::__construct();

$this->urlUtil = new UrlUtil;

}

/*

*    微信扫码页面

*/

public function WeChatLogin(){

//结合md5()函数生成一个唯一ID,用于下一步操作,防止csrf攻击

$state = MD5(uniqid());

$_SESSION['state'] = $state;

$paramArr = array(

'appid'         =>  '微信开放平台申请的appid',

'redirect_uri'  =>  urlencode('微信开放平台申请的回调地址'),

'response_type' =>  'code',

'scope'         =>  'snsapi_login',

'state'         =>  $state

);

$loginUrl = $this->urlUtil->combineUrl(self::GET_CODE_URL, $paramArr);

redirect($loginUrl);

}

/*

*    扫码之后首页拦截

*/

public function index() {

$this->getAccessToken();

$this->refreshAccessToken();

$this->testAccessToken();

$this->display();

}

/*

*    通过code获取access_token

*/

public function getAccessToken(){

$code = $_GET['code'];

$paramArr = array(

'appid'         =>      '微信开放平台申请的appid',

'secret'        =>      '微信开放平台申请的AppSecret',

'code'          =>      $code,

'grant_type'    =>      'authorization_code'

);

$response = $this->urlUtil->get(self::GET_ACCESS_TOKEN_URL, $paramArr);

$arr = json_decode($response,true);

$_SESSION['get']['refresh_token'] = $arr['refresh_token'];

return;

}

/*

*    刷新或续期access_token使用

*/

public function refreshAccessToken(){

$paramArr = array(

'appid'         =>      '微信开放平台申请的appid',

'grant_type'    =>      'refresh_token',

'refresh_token' =>      $_SESSION['get']['refresh_token']

);

$response = $this->urlUtil->get(self::REFRESH_ACCESS_TOKEN_URL, $paramArr);

$arr = json_decode($response,true);

$_SESSION['get']['access_token'] = $arr['access_token'];

$_SESSION['get']['openid'] = $arr['openid'];

return;

}

/*

*    检验授权凭证(access_token)是否有效

*/

public function testAccessToken(){

$paramArr = array(

'access_token'     =>  $_SESSION['get']['access_token'],

'openid'           =>  $_SESSION['get']['openid']

);

$response = $this->urlUtil->get(self::TEST_ACCESS_TOKEN_URL, $paramArr);

$arr = json_decode($response,true);

// 成功,进一步获取扫码人信息

if($arr['errcode'] == 0 && $arr['errmsg'] == 'ok'){

// 获取扫码人信息

$response = $this->urlUtil->get(self::GET_USERINFO_URL, $paramArr);

$userarr = json_decode($response,true);

//将扫码人信息存入数据库,需要什么自己决定

$data['unionid'] = $userarr['unionid'];

M('testwxlogin')->add($data);

}

}

}

结合微信开放平台开发文档操作

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316518&token=ca300eb6465c015e29bc3d44d6b9a80112a6fd60&lang=zh_CN

QQ群440479799主要是技术交流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值