微信网页扫码登录

var $appid =‘*********‘;
    var $appsecret =‘**********‘;

    //构造函数,获取Access Token
    public function __construct($appid = NULL, $appsecret = NULL){
        parent::__construct();

        //扫码登录不需要该Access Token, 语义理解需要
        //1. 本地写入
        $res = file_get_contents(‘access_token.json‘);
        $result = json_decode($res, true);
        $this->expires_time = $result["expires_time"];
        $this->access_token = $result["access_token"];

        if (time() > ($this->expires_time + 3600)) {
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->appsecret;
            $res = getHttpJson($url);
            $result = json_decode($res, true);
            $this->access_token = $result["access_token"];
            $this->expires_time = time();
            file_put_contents(‘access_token.json‘, ‘{"access_token": "‘ . $this->access_token . ‘", "expires_time": ‘ . $this->expires_time . ‘}‘);
        }
    }

    /*
    *  PART1 网站应用
    */

    //生成扫码登录的URL
    public function qrconnect($redirect_url, $scope, $state = NULL)
    {
        $url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $this->appid . "&redirect_uri=" . urlencode($redirect_url) . "&response_type=code&scope=" . $scope . "&state=" . $state . "#wechat_redirect";
        return $url;
    }

    //生成OAuth2的Access Token
    public function oauth2_access_token($code)
    {
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appid . "&secret=" . $this->appsecret . "&code=" . $code . "&grant_type=authorization_code";
        $res = getHttpJson($url);
        return $res;
    }

    //获取用户基本信息(OAuth2 授权的 Access Token 获取 未关注用户,Access Token为临时获取)
    public function oauth2_get_user_info($access_token, $openid)
    {
        $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid . "&lang=zh_CN";
        $res = getHttpJson($url);
      // return json_decode($res, true);
        return $res;
    }

    public function wx_login(){
        if (!isset($_GET["code"])){

            $redirect_url = ‘http://‘.$_SERVER[‘HTTP_HOST‘].$_SERVER[‘REQUEST_URI‘];
            //  $redirect_url = ‘http://www.gizone.net‘.$_SERVER[‘REQUEST_URI‘];

            $jumpurl = $this->qrconnect($redirect_url, "snsapi_login", "123");

            Header("Location: $jumpurl");
        }else{
            $oauth2_info = $this->oauth2_access_token($_GET["code"]);

           // $userinfo = $this->oauth2_get_user_info($oauth2_info[‘access_token‘], $oauth2_info[‘openid‘]);
            $user=M(‘wx_user‘)->where(array(‘unionid‘=>$oauth2_info[‘unionid‘]))->find();
            $username=M(‘person‘)->where(array(‘uid‘=>$user[‘uid‘]))->find()[‘ps_name‘];
            $user_list=M(‘user‘)->where(array(‘uid‘=>$user[‘uid‘]))->find();

            if(!empty($user[‘uid‘])){  //有unionid且是已绑定用户可以登录
                session("username", $username);
                session("uid", $user["uid"]);
                session("user", $user_list);
                $this->success(‘登录成功‘, U(‘Index/index‘));

            }else{  //没有unionid且不为已绑定用户不能登录
                $this->error(‘您没有登录权限‘,U(‘Public/login‘));
            }

        }

    }

原文地址:https://www.cnblogs.com/zrn-php/p/9448026.html

时间: 2024-08-15 18:13:27

微信网页扫码登录的相关文章

微信网页扫码登录的实现

为了让用户登录网站的门槛更低,微信扫一扫登录变得越来越广泛,所以最近加紧赶制的项目中有用到这个功能,此篇文字的出发点基于微信开放平台已经配置好域名(80端口)并且认证成功获得app_id和secret并有权限调用微信的接口.好了,就先谈一谈微信扫码登录的整个流程吧. 第一步,我们必须得把二维码放在页面上显示.首先普及一下二维码是有失效时间以及失效状态的,一旦你扫过一次二维码或者在某段时间内没有扫描页面上的二维码,该二维码就失效了.OK,微信官网给我们提供两种方式来显示二维码:1.后台发请求返回一

黄聪:微信网页扫码登录的实现

为了让用户登录网站的门槛更低,微信扫一扫登录变得越来越广泛,所以最近加紧赶制的项目中有用到这个功能,此篇文字的出发点基于微信开放平台已经配置好域名(80端口)并且认证成功获得app_id和secret并有权限调用微信的接口.好了,就先谈一谈微信扫码登录的整个流程吧. 第一步,我们必须得把二维码放在页面上显示.首先普及一下二维码是有失效时间以及失效状态的,一旦你扫过一次二维码或者在某段时间内没有扫描页面上的二维码,该二维码就失效了.OK,微信官网给我们提供两种方式来显示二维码:1.后台发请求返回一

php微信开放平台--第三方网页微信扫码登录(OAuth2.0)

第一.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频).这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的

微信开放平台开发——网页微信扫码登录(OAuth2.0)

.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频).这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问

C#开发微信门户及应用(45)--微信扫码登录

在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实际项目中. 1.扫码登录配置处理 在我前面的随笔扫码登录处理中,介绍了账号登陆和扫码登录并存的情况,有时候我们可能想只是允许用户扫码登录即可,也就是不需要账号登陆,这种情况我们可以通过进行配置实现处理.例如我在一个基于微信的系统应用里面,通过配置实现了仅仅允许扫码登录的效果.也就是我们可以根据配置,因此其他登

Web应用多账号系统设计及微信扫码登录实现

Web应用多账号系统设计及微信扫码登录实现 1   前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内部人员使用 部署在公网 基于如上特点,显然让公司的人为这样一个内部系统而实现一个完整的账号不太现实,要兼顾隐私性和便捷性的需求,作者想到了使用微信扫码登录来做为身份认证,然后后台管理员审核,这样就可以达到如下的效果: 可以实现无门槛注册(微信扫一扫就完成注册),保证了便捷性 系统对未审核通过的人员进

(转)微信扫码登录网页实现原理

扫码登录操作过程 浏览器输入:https://wx.qq.com/?lang=zh_CN 手机登录微信,利用“扫一扫”功能扫描网页上的二维码 手机扫描成功后,提示“登录网页版微信”:网页上显示“成功扫描 请在手机点击确认以登录” 手机端点击“登录网页版微信”,网页跳转到用户的微信操作界面 整个扫码登录的操作过程还是挺简单的,而且交互地实时性比较好,如果网络不是非常阻塞,整个过程还是非常快的. 扫码登录原理 扫码登录大概的思路是:微信手机客户端从网页二维码里面得到一些信息,然后发送给网页微信的服务

微信 之网页第三方微信扫码登录

一.方式一(网站内嵌二维码微信登录JS) <?php /** * Created by PhpStorm. * User: 25754 * Date: 2019/6/4 * Time: 11:15 */ $state = md5("yangs"); include './login.html'; <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT

网站使用微信扫码登录流程

微信扫码登录是一个标准的oauth 2.0的过程. 1.用户请求访问网站,选择微信登录. 2.redirect到微信二维码页面 3.获取微信登录二维码,请求参数包括本网站的appId和登录成功后跳转回的地址,即relaystate. 4.返回二维码网页. 5.二维码扫入手机. 6.微信客户端将微信用户信息和二维码内的信息传给微信后台. 7.微信后台返回给浏览器授权成功,并附带授权码. 8.浏览器重定向到relaystate的地址,并将授权码作为参数传给网络后台. 9.网站将授权码和自己的地址发给