TP5框架下微信授权登录的代码实现

TP5框架下微信授权登录的代码实现

内容导读

收集整理的这篇技术教程文章主要介绍了TP5框架下微信授权登录的代码实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3190字,纯文字阅读大概需要5分钟

内容图文

本篇文章给大家带来的内容是关于TP5框架下微信授权登录的代码实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

新建配置文件wechat.php

<?phpreturn [	'oauth' => [		'appid'

 => '***',



'appsecret'

 => '***',	],];

新建extendwechatWechatOauth.php

<?phpnamespace wechat;/** * @package 微信授权控制器 */class WechatOauth{

//微信授权配置信息

private $wechat_config = [



'appid'

 => '',



'appsecret'

 => '',

];

public function __construct() {



$this->wechat_config = $this->wechatConfig();

}

/**

 * 获取秘钥配置

 * @return [type] 数组

 */

public function wechatConfig() {



$wechat_config = array_merge($this->wechat_config,config('wechat.oauth'));



return $wechat_config;

}

 /**

 * 获取openid

 * @return string|mixed

 */

public function getUserAccessUserInfo($code = "")

{







if(empty($code)){





$baseUrl = request()->url(true);





$url = $this->getSingleAuthorizeUrl($baseUrl, "123");













Header("Location: $url");





exit();



}else{





$access_token = $this->getSingleAccessToken($code);





return $this->getUserInfo($access_token);



}

}

/**

 * 微信授权链接

 * @param
string $redirect_uri 要跳转的地址

 * @return [type]






 授权链接

 */

public function getSingleAuthorizeUrl($redirect_url = "",$state = '1') {



$redirect_url = urlencode($redirect_url);



return "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->wechat_config['appid'] . "&redirect_uri=".$redirect_url."&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";

 }

/**

 * 获取token

 * @return [type] 返回token


*/

public function getSingleAccessToken($code) {



$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->wechat_config['appid'].'&secret='.$this->wechat_config['appsecret'].'&code='.$code.'&grant_type=authorization_code';





$access_token = $this->https_request($url);



return $access_token;



 }


 /**

 * 发送curl请求

 * @param $url string

 * @param return array|mixed

 */

public function https_request($url)

{



$curl = curl_init();



curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);



curl_setopt($curl, CURLOPT_URL, $url);



curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);



$AjaxReturn = curl_exec($curl);



//获取access_token和openid,转换为数组



$data = json_decode($AjaxReturn,true);



curl_close($curl);



return $data;

}

 /**

 * @explain

 * 通过code获取用户openid以及用户的微信号信息

 * @return array|mixed

 * @remark

 * 获取到用户的openid之后可以判断用户是否有数据,可以直接跳过获取access_token,也可以继续获取access_token

 * access_token每日获取次数是有限制的,access_token有时间限制,可以存储到数据库7200s. 7200s后access_token失效

 **/

public function getUserInfo($access_token = [])

{



if(!$access_token){





return [







'code' => 0,







'msg' => '微信授权失败',





 ];



}



$userinfo_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token['access_token'].'&openid='.$access_token['openid'].'&lang=zh_CN';



$userinfo_json = $this->https_request($userinfo_url);





//获取用户的基本信息,并将用户的唯一标识保存在session中



if(!$userinfo_json){





return [







'code' => 0,







'msg' => '获取用户信息失败!',





 ];



}



return $userinfo_json;

}}

控制器调用

public function index()

{


 $wchat = new wechatWechatOauth();




 $code = request()->param('code',"");


 $user = $wchat->getUserAccessUserInfo($code);

}

相关推荐:

TP数据层进行增删改查操作的代码

TP中使用原生的MySQL语句的方法(代码)

以上就是TP5框架下微信授权登录的代码实现的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的TP5框架下微信授权登录的代码实现全部内容,希望文章能够帮你解决TP5框架下微信授权登录的代码实现所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com