• 微信授权登录


    1.微信授权登录注意项:【在微信公众后台只设置了js安全域名,而没有开启服务器配置,就是验证服务器这个接口】

    授权分为snsapi_base和snsapi_userinfo

    现在有一个这样的场景,用户扫码而且用户必须授权才能进入。但是这样会有一个问题,就是每次刷新一个页面都需要进行授权操作,而且还要维护redirect_uri,显然这样是不合理的

    解决1:可以在授权之后进行缓存,然后在缓存制定期内不需要进行重复授权。问题:在iOS微信中测试,用户强制关闭进程之后,就会出现cookie丢失,所以再次进入的时候要要提示授权!显然这样体验也不好。

    解决2:微信授权有一个snsapi_base,但是个好像如果用户第一次扫码,会出现授权失败,但是可以先snsapi_userinfo授权,然后就可以使用snsapi_base授权,这样解决了cookie丢失问题(先snsapi_base授权,如果失败snsapi_userinfo授权)

     function __construct()
        {
            parent::__construct();
            $this->load->model('wx_message_board/Wx_message_board_model', 'Wx_message_board');
            $this->my_model = $this->Wx_message_board;
    
    
            // 第一种snsapi_userinfo授权
            if (!isset($_SESSION['openid'])) {
                if (!isset($_GET['code'])) {
                    $redirect_uri = curPageURL() . $_SERVER['REQUEST_URI'];
                    //snsapi_base
                    $this->my_model->getAuthorizationCode($redirect_uri, 'snsapi_base');
                } else {
                    $info = $this->my_model->getAuthorizationUserInfo();
                    if (isset($info['openid'])) {
                        $_SESSION['openid']   = $info['openid'];
                        $_SESSION['nickname'] = $info['nickname'];
                    }
                }
            }
            if (!isset($_SESSION['openid'])) {
                // 这个授权是防止snsapi_base授权失败
                $redirect_uri = curPageURL() . $_SERVER['REQUEST_URI'];
                $this->my_model->getAuthorizationCode($redirect_uri);
                die;
            }
        }
    

      

  • 相关阅读:
    Kubernetes实战指南(三十三):都0202了,你还在手写k8s的yaml文件?
    Hadoop学习笔记
    Anaconda、Pycharm的安装与运行和Python环境的搭建
    常用编程软件文件配置(下载安装教程)
    error C2678: 二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符
    Java 移位运算、符号位扩展
    c++ 集合操作
    c++ 输入与缓冲区
    python 装饰器
    python global 与 nonlocal
  • 原文地址:https://www.cnblogs.com/shiwenhu/p/6879745.html
Copyright © 2020-2023  润新知