thinkphp 微信授权登录 以及微信实现分享
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了thinkphp 微信授权登录 以及微信实现分享,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3946字,纯文字阅读大概需要6分钟。
内容图文
<?php
namespace app\wechat\controller;
use think\Controller;
use think\Request;
/**
* 微信授权登录类
* User: summer
* Date: 2017/11/27
* Time: 13:57
*/
class WeChat extends Controller
{
private $appid = '*********'; //微信公众号APPID
private $appsecret = '***************'; //密匙
private $url = '********************'; //微信回调地址
public function start()
{
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->appid . '&redirect_uri=' . urlencode($this->url) . '&response_type=code&scope=snsapi_userinfo&state=state#wechat_redirect';
header('location:' . $url);
}
/**
* 登录
*/
public function login()
{
$code = $_GET['code'];
$access_token = $this->getUserAccessToken($code);
$UserInfo = $this->getUserInfo($access_token);
var_dump($UserInfo);
}
/**
* 获取授权token
* @param $code
* @return bool|string
*/
private function getUserAccessToken($code)
{
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$this->appid&secret=$this->appsecret&code=$code&grant_type=authorization_code";
$res = file_get_contents($url);
return json_decode($res);
}
/**
* 获取用户信息
* @param $accessToken
* @return mixed
*/
private function getUserInfo($accessToken)
{
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=$accessToken->access_token&openid=$accessToken->openid&lang=zh_CN";
$UserInfo = file_get_contents($url);
return json_decode($UserInfo, true);
}
/**
* 此AccessToken 与 getUserAccessToken不一样
* 获得AccessToken
* @return mixed
*/
private function getAccessToken()
{
// 获取缓存
$access = cache('access_token');
// 缓存不存在-重新创建
if (empty($access)) {
// 获取 access token
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this -> appid}&secret={$this->appsecret}";
$accessToken = file_get_contents($url);
$accessToken = json_decode($accessToken);
// 保存至缓存
$access = $accessToken->access_token;
cache('access_token', $access, 7000);
}
return $access;
}
/**
* 获取JS证明
* @param $accessToken
* @return mixed
*/
private function _getJsapiTicket($accessToken)
{
// 获取缓存
$ticket = cache('jsapi_ticket');
// 缓存不存在-重新创建
if (empty($ticket)) {
// 获取js_ticket
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" . $accessToken . "&type=jsapi";
$jsTicket = file_get_contents($url);
$jsTicket = json_decode($jsTicket);
// 保存至缓存
$ticket = $jsTicket->ticket;
cache('jsapi_ticket', $ticket, 7000);
}
return $ticket;
}
/**
* 获取JS-SDK调用权限
*/
public function shareAPi(Request $request)
{
header("Access-Control-Allow-Origin:*");
// 获取accesstoken
$accessToken = $this->getAccessToken();
// 获取jsapi_ticket
$jsapiTicket = $this->_getJsapiTicket($accessToken);
// -------- 生成签名 --------
$wxConf = [
'jsapi_ticket' => $jsapiTicket,
'noncestr' => md5(time() . '!@#$%^&*()_+'),
'timestamp' => time(),
'url' => $request->post('url'), //这个就是你要自定义分享页面的Url啦
];
$string1 = sprintf('jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s', $wxConf['jsapi_ticket'], $wxConf['noncestr'], $wxConf['timestamp'], $wxConf['url']);
// 计算签名
$wxConf['signature'] = sha1($string1);
$wxConf['appid'] = $this->appid;
return json($wxConf);
}
}
--------------------
作者:zscsummer
来源:CSDN
原文:https://blog.csdn.net/zscsummer/article/details/78655322
版权声明:本文为博主原创文章,转载请附上博文链接!
内容总结
以上是互联网集市为您收集整理的thinkphp 微信授权登录 以及微信实现分享全部内容,希望文章能够帮你解决thinkphp 微信授权登录 以及微信实现分享所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。