微信公衆平臺頁面授權處理方法(單一方法處理)

在使用微信公衆平臺進行第三方開發的過程中,我們經常會遇到需要調用微信頁面授權、從而獲取用戶信息。但是單一的使用微信頁面授權的方式進入頁面,總會存在跳轉到微信頁面進行授權的問題,這樣就會增加用戶進入頁面所費時間,從而影響用戶體驗。
所以我們需要一種方式,藉助其他機制等,不必要使得用戶每次均要跳轉到微信頁面授權位置。這樣在用戶不是第一次進入頁面的過程中,即可以不用跳轉微信頁面授權,從而減少用戶進入頁面時間,提升用戶體驗。
這樣的使用方式,可以藉助服務器session機制,利用if判斷,進行判斷。
示例代碼如下:

public function OAuth()
{
    header('Content-type: text/html; charset=utf-8');
    //首先獲取微信配置信息
    $m_sssmall_conf_weixin = M('sssmall_conf_weixin');
    $conf = $m_sssmall_conf_weixin->where('id=1')->find();
    //將appid、appsecret設爲超全局變量,便於調用。
    $appid = $conf['appid'];
    $appsecret = $conf['appsecret'];
    //$access_token = getApiToken();
    dump($_SESSION['oauth']);
    //條件判斷(假如session不存在,進行頁面授權,並設置session)
    if (empty($_SESSION['oauth']) && empty($_GET['code'])) {
        $redirect_uri = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //此即爲本頁面地址
        $redirect_uri = urlencode($redirect_uri);
        $getCodeUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . $redirect_uri . '&response_type=code&scope=snsapi_userinfo&state=oauth#wechat_redirect';
        redirect($getCodeUrl, 0);
    } elseif (!empty($_GET['code']) && empty($_SESSION['oauth'])) {
        $getAccesstokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $_GET['code'] . '&grant_type=authorization_code';
        $res = WeChat_request($getAccesstokenUrl);
        $openid = $res->openid;
        $_SESSION['oauth'] = $openid;
        dump($openid);
        //獲取用戶信息存儲
    } else {
        dump('第二次進入');
        dump($_SESSION['oauth']);
    }
    dump('看到我就證明成功啦');
}

此處對於頁面授權的重定向地址爲此頁面本身,重新進入頁面後會進行條件判斷,當openid信息已經存在使,即可不用在進行頁面授權,從而提升用戶體驗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章