成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

微信網(wǎng)頁(yè)授權(quán)

岳光 / 1647人閱讀

摘要:重新整理做過(guò)的功能,以及過(guò)程遇到問(wèn)題,溫故而知新官方文檔一準(zhǔn)備工作接入配置修改添加業(yè)務(wù)域名網(wǎng)頁(yè)授權(quán)域名授權(quán)回調(diào)域名不加協(xié)議頭綁定時(shí)微信要求將文件上傳根目錄,需要將文件添加到我項(xiàng)目許可中確保文件可被訪問(wèn),否則綁定不通過(guò)公眾平臺(tái)參數(shù)二功能流程結(jié)

重新整理做過(guò)的功能,以及過(guò)程遇到問(wèn)題,溫故而知新 
官方文檔
一 準(zhǔn)備工作 (a.接入 b.配置)

a) 修改/添加 業(yè)務(wù)域名、網(wǎng)頁(yè)授權(quán)域名; 授權(quán)回調(diào)域名 不加 http:// 協(xié)議頭

綁定時(shí)微信要求將 *.txt文件上傳根目錄,需要將文件 添加到我項(xiàng)目.htaccess許可中 確保文件可被訪問(wèn),否則綁定不通過(guò)

b) 公眾平臺(tái) 參數(shù)

appid
secret

二 功能

流程

結(jié)合項(xiàng)目實(shí)現(xiàn)以下功能:

a) 首次授權(quán)獲取userData存庫(kù) openid/unionid 關(guān)系對(duì)應(yīng)
b) openid/unionid session緩存
c) session有效期內(nèi) 延時(shí)
d) access_token緩存、刷新;

簡(jiǎn)單畫(huà)一個(gè)流程圖:

access_token 緩存/刷新 感覺(jué)沒(méi)必要;因?yàn)閛penid過(guò)期,也要重新獲取的;
code獲取需要重定向,所以可以寫(xiě)在父類(lèi);

ci框架

class WX_Controller extends CI_Controller
{
    public $wx_code;
    public $wx_openid;
    public $wx_unionid;
    public $access_token;

    public function __construct() {
        parent::__construct();
        $this->load->library("session");

        // 存在session緩存 刷新 緩存時(shí)間
        if (isset($_SESSION["openid"])) {
            $this->session->mark_as_temp("openid", WX_USER_TEMPTIME);
            $this->session->mark_as_temp("unionid", WX_USER_TEMPTIME);
            $this->session->mark_as_temp("userData", WX_USER_TEMPTIME);
        }else {
            // 1. code
            $this->get_wx_code();

            // 2. token and openid
            $this->get_wx_acctoken();
            // 3. 驗(yàn)證token

            // 4. 如果首次授權(quán)請(qǐng)求微信,否則查庫(kù)獲取userData
            $this->load->model("Mwxuser");
            $where = array("openid"=>$this->wx_openid);
            $userData = $this->Mwxuser->wx_user_list(0, 1, $where);
            if (!$userData) {
                $userData = $this->get_wx_user_data();
            }

            // 5. 緩存openid unionid userData
            $sessionData = array("openid"=>$this->wx_openid, "unionid"=>$this->wx_unionid, "userData"=>$userData);
            $this->session->set_userdata($sessionData);
        }
    }
 }

code

/*----------------------------------------------------------*
                     微信公眾號(hào)授權(quán)登錄
*----------------------------------------------------------*/
    // get wx code 公眾號(hào) scope:snsapi_userinfo同樣靜默
    public function get_wx_code() {
        $code = $this->input->get("code");
        if ($code) {
            $this->wx_code = $code;
        }else {
            $wx_get_code  = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WX_APP_ID."&redirect_uri=".urlencode(UNION_INDEX)."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
            $this->load->helper("url");
            redirect($wx_get_code);
        }
    }

acc-token

    // get wx access token
    // FIXME.jtwang: 這里緩存token貌似也沒(méi)什么用,如果session-openid過(guò)期,這里緩存token也是沒(méi)用的
    public function get_wx_acctoken() {
        // a. 查詢有效 token

        // b. token過(guò)期 refresh token 刷新

        // c. refresh token 過(guò)期 重新獲取
        $this->load->library("mycurl");
        $wx_get_token = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".WX_APP_ID."&secret=".WX_SECRET."&code=".$this->wx_code."&grant_type=authorization_code";
        $returnContent = $this->mycurl->curl_get($wx_get_token);
        $returnContent = json_decode($returnContent, true);

        if (!isset($returnContent["access_token"])) {
            die("error-page-todo-later-token".$returnContent["errcode"]);
        }

        $access_token     = $returnContent["access_token"];
        $refresh_token    = $returnContent["refresh_token"];
        $this->wx_openid  = $returnContent["openid"];           //openid
        $this->wx_unionid = $returnContent["unionid"];          //unionid
        $token_tempdate   = time()+7200;
        $refresh_tempdate = time()+30*24*60*60;

        $this->access_token = $access_token;
    }

拉取userData

    // 請(qǐng)求微信 拉取用戶信息 返回 userData
    public function get_wx_user_data() {
        $wx_get_userinfo = "https://api.weixin.qq.com/sns/userinfo?access_token=".$this->access_token."&openid=".$this->wx_openid."&lang=zh_CN";
        $returnContent   = $this->mycurl->curl_get($wx_get_userinfo);
        $returnContent   = json_decode($returnContent, true);

        if (!isset($returnContent["openid"])) {
            die("error-page-todo-later-userdata".$returnContent["errcode"]);
        }

        $userData = array();
        $userData["openid"]     = $returnContent["openid"];
        $userData["unionid"]    = $returnContent["unionid"];
        $userData["nickname"]   = $returnContent["nickname"];
        // $userData["sex"]        = $returnContent["sex"];
        $userData["province"]   = $returnContent["province"];
        $userData["city"]       = $returnContent["city"];
        $userData["country"]    = $returnContent["country"];
        $userData["headimgurl"] = $returnContent["headimgurl"];
        // $userData["privilege"]  = $returnContent["privilege"];

        // 入庫(kù)
        $this->load->model("Mwxuser");
        $res = $this->Mwxuser->wx_user_add($userData);

        if (!$res) {
            die("error-page-todo-later add user-data error");
        }

        return $userData;
    }
}
不對(duì)的地方還請(qǐng)指教。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30785.html

相關(guān)文章

  • 淺析微信支付:微信公眾號(hào)網(wǎng)頁(yè)授權(quán)

    摘要:淺析微信支付微信公眾號(hào)網(wǎng)頁(yè)授權(quán)本文是淺析微信支付系列文章的第四篇,主要講解微信支付前如何獲取獲取網(wǎng)頁(yè)授權(quán)及用戶信息獲取。淺析微信支付系列已經(jīng)更新三篇了喲,沒(méi)有看過(guò)的朋友們可以看一下哦。 淺析微信支付:微信公眾號(hào)網(wǎng)頁(yè)授權(quán) 本文是【淺析微信支付】系列文章的第四篇,主要講解微信支付前如何獲取獲取網(wǎng)頁(yè)授權(quán)及用戶信息獲取。 淺析微信支付系列已經(jīng)更新三篇了喲~,沒(méi)有看過(guò)的朋友們可以看一下哦。 淺...

    tinyq 評(píng)論0 收藏0
  • H5/web app/第三方網(wǎng)頁(yè) 微信授權(quán)登錄 調(diào)研

    摘要:微信登錄用戶可使用微信帳號(hào)快速登錄你的網(wǎng)站,同一用戶使用微信登錄你的不同應(yīng)用和公眾帳號(hào),會(huì)對(duì)應(yīng)同一個(gè),以便進(jìn)行不同業(yè)務(wù)間的帳號(hào)統(tǒng)一微信授權(quán)登錄可分為掃碼登錄一般用于網(wǎng)頁(yè)微信開(kāi)放平臺(tái)跳轉(zhuǎn)授權(quán)登錄第三方使用微信開(kāi)放平臺(tái)微信內(nèi)置瀏覽器內(nèi)登錄一 微信登錄: 用戶可使用微信帳號(hào)快速登錄你的網(wǎng)站,同一用戶使用微信登錄你的不同應(yīng)用和公眾帳號(hào),會(huì)對(duì)應(yīng)同一個(gè)UnionID,以便進(jìn)行不同業(yè)務(wù)間的帳號(hào)統(tǒng)一 ...

    keithxiaoy 評(píng)論0 收藏0
  • vue微信網(wǎng)頁(yè)授權(quán)最終解決方案

    摘要:微信網(wǎng)頁(yè)授權(quán),基于適配方案,開(kāi)發(fā)的微信授權(quán)方案。項(xiàng)目地址又又又一次來(lái)寫(xiě)微信網(wǎng)頁(yè)授權(quán),一年前寫(xiě)過(guò)的微信授權(quán)解決方案。 vue微信網(wǎng)頁(yè)授權(quán),基于vue-cli3.0+webpack 4+vant ui + sass+ rem適配方案+axios,開(kāi)發(fā)的微信授權(quán)方案。項(xiàng)目地址:vue-wechat-auth 又又又一次來(lái)寫(xiě)微信網(wǎng)頁(yè)授權(quán),一年前寫(xiě)過(guò)的 [vue 微信授權(quán)解決方案]。 參考了[v...

    wawor4827 評(píng)論0 收藏0
  • ajax 實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán)登錄

    摘要:項(xiàng)目背景因?yàn)轫?xiàng)目采用前后端完全分離方案,所以,無(wú)法使用常規(guī)的微信授權(quán)登錄作法,需要采用實(shí)現(xiàn)微信授權(quán)登錄。其實(shí)實(shí)現(xiàn)這個(gè)也麻煩,在實(shí)現(xiàn)之前,我們需要了解一下微信授權(quán)的整個(gè)流程。用戶微信登錄授權(quán)以后回調(diào)過(guò)來(lái)的會(huì)攜帶兩個(gè)參數(shù),第一個(gè)是另一個(gè)就是。 項(xiàng)目背景 因?yàn)轫?xiàng)目采用前后端完全分離方案,所以,無(wú)法使用常規(guī)的微信授權(quán)登錄作法,需要采用 ajax 實(shí)現(xiàn)微信授權(quán)登錄。 需求分析 因?yàn)楸救耸且粋€(gè)ph...

    binaryTree 評(píng)論0 收藏0
  • VueJs單頁(yè)應(yīng)用實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán)微信分享功能

    摘要:在實(shí)際開(kāi)發(fā)中,無(wú)論是做端端還是微信公眾號(hào)等類(lèi)型的項(xiàng)目的時(shí)候,或多或少都會(huì)涉及到微信相關(guān)的開(kāi)發(fā),最近公司項(xiàng)目要求實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán),并獲取微信用戶基本信息的功能及微信分享的功能,現(xiàn)在總算完成了,但開(kāi)發(fā)過(guò)程中遇到好幾個(gè)坑。 在實(shí)際開(kāi)發(fā)中,無(wú)論是做PC端、WebApp端還是微信公眾號(hào)等類(lèi)型的項(xiàng)目的時(shí)候,或多或少都會(huì)涉及到微信相關(guān)的開(kāi)發(fā),最近公司項(xiàng)目要求實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán),并獲取微信用戶基本信息的...

    doodlewind 評(píng)論0 收藏0
  • VueJs單頁(yè)應(yīng)用實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán)微信分享功能

    摘要:在實(shí)際開(kāi)發(fā)中,無(wú)論是做端端還是微信公眾號(hào)等類(lèi)型的項(xiàng)目的時(shí)候,或多或少都會(huì)涉及到微信相關(guān)的開(kāi)發(fā),最近公司項(xiàng)目要求實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán),并獲取微信用戶基本信息的功能及微信分享的功能,現(xiàn)在總算完成了,但開(kāi)發(fā)過(guò)程中遇到好幾個(gè)坑。 在實(shí)際開(kāi)發(fā)中,無(wú)論是做PC端、WebApp端還是微信公眾號(hào)等類(lèi)型的項(xiàng)目的時(shí)候,或多或少都會(huì)涉及到微信相關(guān)的開(kāi)發(fā),最近公司項(xiàng)目要求實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán),并獲取微信用戶基本信息的...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<