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

資訊專欄INFORMATION COLUMN

微信公眾號授權(quán)

tuomao / 1121人閱讀

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

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

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

綁定時微信要求將 *.txt文件上傳根目錄,需要將文件 添加到我項目.htaccess許可中 確保文件可被訪問,否則綁定不通過

b) 公眾平臺 參數(shù)

appid
secret

二 授權(quán)登錄

簡單畫一個流程圖

網(wǎng)上很多人說微信瀏覽器 session 失效的問題,我測試并不存在; 不太懂為什么session會失效;暫時get不到

忽略了refresh_token 刷新access_token步驟

ci框架

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

    public function index() {
        if (!isset($_SESSION["wx_user_data"])) {
            // 1. 獲取緩存token: 如果token過期則通過 refresh_token獲取,都過期或首次請求則獲取code
            $code = $this->input->get("code");
            if (!$code) {
                //獲取現(xiàn)有token
                $access_token = $this->get_wx_access_token();
            }

            // 2. get access token
            $this->load->library("mycurl");
            $wx_get_token = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".WX_APP_ID."&secret=".WX_SECRET."&code=".$code."&grant_type=authorization_code";
            list($returnCode, $returnContent) = $this->mycurl->curl_post_json_to_java($wx_get_token);
            $returnContent = json_decode($returnContent, true);

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

            $access_token  = $returnContent["access_token"];
            $refresh_token = $returnContent["refresh_token"];
            $expires_date  = time()+7100;
            $openid        = $returnContent["openid"];

            // 3. 刷新 access token
            // 4. 拉取用戶信息
            $wx_get_userinfo = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
            list($returnCode, $returnContent) = $this->mycurl->curl_post_json_to_java($wx_get_userinfo);
            $returnContent = json_decode($returnContent, true);

            if ($returnCode ===200 && isset($returnContent["errcode"])) {
                die("error-page-todo-later".$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"];

            // 5. session 存儲userData 緩存做不到每次從入口進來實時刷新用戶信息
            $this->session->set_userdata("wx_user_data", $userData);
        }

        // 6. 項目主邏輯
        $templateData["userData"] = $_SESSION["wx_user_data"];
        $this->load->view("union_m/index.html", $templateData);
    }

    /**
     * 跳轉(zhuǎn)至授權(quán)頁面,公眾號入口 scope user-info 同樣靜默
     * @return [type] [description]
     */
    public function redirect_wx_url() {
        $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);
    }

    // access token 維護
    public function get_wx_access_token() {
        // 1. 是否有未過期 token 直接return
        // 2. 是否有未過期 refresh_token 則獲取 token, 刷新access_token (忽略)
        // 3. 都不存在 首次授權(quán) 或 全部過期的情況 跳轉(zhuǎn)授權(quán)頁面
        $this->redirect_wx_url();
    }
結(jié)合項目最后實現(xiàn)地址

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

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

相關(guān)文章

  • 淺析微信支付:開發(fā)前的準備

    摘要:本文是淺析微信支付系列文章的第三篇,主要會講一下在開發(fā)前的一些注意事項。淺析微信支付系列已經(jīng)更新兩篇了喲,沒有看過的朋友們可以看一下。開通微信支付需要注冊登陸微信商戶平臺,微信支付相關(guān)的信息都需要在這個平臺上進行操作。 本文是【淺析微信支付】系列文章的第三篇,主要會講一下在開發(fā)前的一些注意事項。 淺析微信支付系列已經(jīng)更新兩篇了喲~,沒有看過的朋友們可以看一下。 淺析微信支付:前篇大綱...

    yanest 評論0 收藏0
  • 淺析微信支付:微信公眾網(wǎng)頁授權(quán)

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

    tinyq 評論0 收藏0
  • 小程序登錄、微信網(wǎng)頁授權(quán)(Java版)

    摘要:小程序登錄微信網(wǎng)頁授權(quán)版首先呢,登錄授權(quán)授權(quán)登錄,是一樣的意思,不用糾結(jié)。寫小程序授權(quán)登錄的代碼前,需要了解清楚與的區(qū)別,這里再簡單介紹一下騰訊有個微信開放平臺,只有企業(yè)才能注冊賬號,可理解為微信體系里,最頂級的賬號。 小程序登錄、微信網(wǎng)頁授權(quán)(Java版) 首先呢,登錄、授權(quán)、授權(quán)登錄,是一樣的意思,不用糾結(jié)。 寫小程序授權(quán)登錄的代碼前,需要了解清楚openid與unionid的區(qū)別...

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

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

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

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

    BicycleWarrior 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<