微信用户登录

namespace Weixin\Controller;

use Think\Controller;
use Think\Model;

session_start;//打开session
class TestController extends Controller //继承的这个控制器没用 你可以继承其他的任意一个
{
  //第一步:用户同意授权,获取code
  function accept()
  {
    //这个链接是获取code的链接 链接会带上code参数
    $REDIRECT_URI = BASE_URL.'/weixin/test/getcode';
    $REDIRECT_URI = urlencode($REDIRECT_URI);
    $scope = "snsapi_userinfo";
    $state = md5(mktime());
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . C('weixin.appid') . "&redirect_uri=" . $REDIRECT_URI . "&response_type=code&scope=" . $scope . "&state=" . $state . "#wechat_redirect";
    header("location:$url");
  }

  //用户同意之后就获取code  通过获取code可以获取一切东西了  机智如我
  function getCode()
  {

    $code = $_GET["code"];
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . C('weixin.appid') . "&secret=" . C('weixin.appsecret'). "&code=" . $code . "&grant_type=authorization_code";
    $res = $this->https_request($url);
    $res = json_decode($res, true);
    $openid = $res["openid"];
    echo "<pre>";
    $access_token = $res["access_token"];
    $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid . "&lang=zh_CN";
    $res = $this->https_request($url);
    $res = json_decode($res, true);
    print_r($res);
    //把用户的信息写入session 以备查用
    $weixin = $res["openid"];
    $nickname = $res["nickname"];
    $_SESSION["weixin"] = $weixin;
    $_SESSION["nickname"] = $nickname;

    $model = new Model();
    $model->table(C('DB_PREFIX').'user')->add(['openid'=>$res['openid'],'nickname'=>$res['nickname']]);

    echo "<pre>";
    header("location:".U('User/index'));
  }

  function https_request($url)
  {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
//    if (!empty($data)) {
//      curl_setopt($curl, CURLOPT_POST, 1);
//      curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值