1. 程式人生 > >微信授權登錄

微信授權登錄

parent 微信授權 微信公眾 cti sage 一個 author 緩存 問題

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;
        }
    }

  

微信授權登錄