亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

微信小程序之會(huì)話處理

hoohack / 2087人閱讀

摘要:是一個(gè)用于處理微信小程序的,實(shí)現(xiàn)思路參照了騰訊云官方微信小程序云端解決方案中的會(huì)話管理場(chǎng)景,即這個(gè)是其版本的一種實(shí)現(xiàn)。

WechatAppSessionBundle 是一個(gè)用于處理微信小程序的 Symfony Bundle,實(shí)現(xiàn)思路參照了騰訊云官方-微信小程序云端解決方案中的 會(huì)話管理場(chǎng)景,即這個(gè) Bundle 是其 PHP(Symfony) 版本的一種實(shí)現(xiàn)。(只是不知道國(guó)內(nèi)有多少使用 Symfony 的童鞋?)

微信的定位并不是 HTML5,這里很多人都有誤解。在一些實(shí)現(xiàn)上,并不能想當(dāng)然地用 HTML5 的思路來(lái)思考。比如,微信的請(qǐng)求接口 wx.request 并不支持 cookie 傳遞,所以會(huì)話層不能使用傳統(tǒng)的 Session 方式。 ——騰訊云官方的微信小程序云端解決方案

該 Bundle 包含的功能:

針對(duì)特定的控制器獲取微信用戶信息并校驗(yàn)合法性

將用戶信息緩存到 Redis

將用戶信息設(shè)置到 Symfony/Component/HttpFoundation/Request 對(duì)象中

安裝和配置 第一步:使用 composer 安裝 Bundle
composer require wechat-app/session-bundle
第二步:?jiǎn)⒂?Bundle

第三步:配置依賴 Bundle

snc/redis-bundle 處理Redis操作的部分(配置)

sensio/buzz-bundle 處理 HTTP 請(qǐng)求的部分(可不配置)

相關(guān)依賴的深入配置,請(qǐng)參考其對(duì)應(yīng)的文檔。

第四步:配置
# app/config/config.yml
snc_redis:
    clients:
        default:
            type: predis
            alias: default
            dsn: "redis://passwd@localhost"

wechat_app_session:
    app_id:     "wx66666"   # 小程序的app id
    app_secret: "wx*****"   # 小程序的app secret
    key_prefix: "wx-user:"  # Redis中,用戶信息的key前綴
第五步:使用

在安裝和配置完成之后,Bundle 的功能馬上就可以投入使用了,該 Bundle 只會(huì)對(duì)實(shí)現(xiàn)了 WechatApp/SessionBundle/Controller/SessionAuthController 接口的控制器生效,對(duì)其他不是用于處理小程序請(qǐng)求的接口不會(huì)有影響。

處理流程請(qǐng)參照騰訊云提供的官方文檔。

下面舉個(gè)例子:

// src/DemoBundle/Controller/DemoController.php
namespace DemoBundleController;

use AppBundleControllerBaseController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyComponentHttpFoundationRequest;
use WechatAppSessionBundleControllerSessionAuthController;

/**
 * @Route("/demo")
 */
class DemoController extends Controller implements SessionAuthController
{
    /**
     * @Route("/test")
     */
    public function testAction(Request $request) 
    {
        // 從 Request 的 header 的屬性中獲取當(dāng)前請(qǐng)求的微信用戶信息
        $wxUser = $request->attributes->get("wx_user");
        return $this->json($wxUser);
    }
}

訪問(wèn)上面 action 對(duì)應(yīng)的路由,將返回一個(gè)包含用戶信息 json,大致是:

{
  "nickName": "MJ",
  "gender": 1,
  "language": "zh_CN",
  "city": "Zhuhai",
  "province": "Guangdong",
  "country": "CN",
  "avatarUrl": "頭像URL",
  "openId": "owVxxxxxxxxxxx"
}

此時(shí)登入到 Redis 中:

keys *
1) "wx-user:session:xxxxxxxxxxx"
2) "wx-user:code:owVxxxxxxxxxxx"

wx-user:code:*** 維護(hù)用戶 openid 對(duì)應(yīng)的 session

wx-user:session:*** 保存著對(duì)應(yīng)于前者的用戶信息

以上兩個(gè) key 都設(shè)置了過(guò)期時(shí)間,目前定為7200秒。

以上是后端接口部分的使用,小程序端的部分相對(duì)來(lái)說(shuō)比較簡(jiǎn)單。

在首次獲取用戶信息的時(shí)候,需要調(diào)用 wx.loginwx.getUserInfo 接口,把獲取到的 coderawDatasignature 一同設(shè)置到 wx.request 接口的 header 中,設(shè)置時(shí),有特定的名稱,分別是 X-WX-Code、X-WX-RawDataX-WX-Signature

接口返回非200的 HTTP 狀態(tài)碼時(shí),請(qǐng)查看接口返回的提示信息,若請(qǐng)求成功,則會(huì)返回你自己編寫(xiě)的接口所返回的信息

該 Bundle 暫時(shí)沒(méi)有提供小程序端的部分,小程序端的實(shí)現(xiàn)可以參考上面的說(shuō)明去自行實(shí)現(xiàn),或借鑒騰訊云官方提供的一個(gè)實(shí)現(xiàn)方式,記住,是借鑒而不是照搬,因?yàn)檫@個(gè) Bundle 并非是為了搭配騰訊云提供的實(shí)現(xiàn)方案的,另外要注意的是,其小程序端的實(shí)現(xiàn)方式只實(shí)現(xiàn)了 wx.request 接口的包裝,而關(guān)于文件上傳、WebSocket 的實(shí)現(xiàn)都還沒(méi)有包裝,使用時(shí)還是需要考慮自己完善其他請(qǐng)求的包裝。

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

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

相關(guān)文章

  • 信小程序server-2-實(shí)現(xiàn)會(huì)話

    摘要:安裝安裝及其客戶端命令行工具查看版本啟動(dòng)創(chuàng)建目錄,用于數(shù)據(jù)和日志存儲(chǔ)啟動(dòng)注首次啟動(dòng)可能會(huì)花費(fèi)大概時(shí)間可以使用下面的命令來(lái)檢查是否啟動(dòng)成功注默認(rèn)監(jiān)聽(tīng)端口添加用戶登錄本地服務(wù)創(chuàng)建用戶退出安裝模塊實(shí)現(xiàn)小程序的會(huì)話功能 1.安裝MongoDB #安裝 MongoDB及其客戶端命令行工具 yum install mongodb-server mongodb -y #查看版本 mongod --v...

    Eminjannn 評(píng)論0 收藏0
  • 信小程序開(kāi)發(fā)中的二三事網(wǎng)易云信IMSDK DEMO

    摘要:傳統(tǒng)的網(wǎng)頁(yè)編程采用的三劍客來(lái)實(shí)現(xiàn),在微信小程序中同樣有三劍客。觀察者模式不難實(shí)現(xiàn),重點(diǎn)是如何在微信小程序中搭配其特有的生命周期來(lái)使用。交互事件傳統(tǒng)的事件傳遞類型有冒泡型與捕獲型,微信小程序中自然也有。 本文由作者鄒永勝授權(quán)網(wǎng)易云社區(qū)發(fā)布。 簡(jiǎn)介為了更好的展示我們即時(shí)通訊SDK強(qiáng)悍的能力,網(wǎng)易云信IM SDK微信小程序DEMO的開(kāi)發(fā)就提上了日程。用產(chǎn)品的話說(shuō)就是: 云信 IM 小程序 S...

    weij 評(píng)論0 收藏0
  • 從前端界面開(kāi)發(fā)談信小程序體驗(yàn)

    摘要:在開(kāi)發(fā)之前你要有微信開(kāi)發(fā)者工具。同時(shí)為了更適合開(kāi)發(fā)微信小程序,還對(duì)進(jìn)行了擴(kuò)充以及修改,直接幫我們把適配的一部分工作都做了,比如他的,可以根據(jù)屏幕寬度進(jìn)行自適應(yīng),規(guī)定屏幕寬為。 本文由云+社區(qū)發(fā)表 這段時(shí)間有幸加入了一個(gè)關(guān)于微信小程序的項(xiàng)目開(kāi)發(fā)組,從無(wú)到有的根據(jù)文檔自行學(xué)習(xí)了小程序的開(kāi)發(fā)過(guò)程,前面已經(jīng)有幾位前輩的文章珠玉在前,我這里就先從前端界面的開(kāi)發(fā)方面談一談小程序以及我所遇到的問(wèn)題吧...

    hellowoody 評(píng)論0 收藏0
  • 信小程序登錄那些事

    摘要:小程序的登錄跟平時(shí)自己這種登錄驗(yàn)證還不太一樣,多了一個(gè)角色,那就是微信服務(wù)器。的有效期默認(rèn)是小時(shí),當(dāng)用戶一直在使用小程序的話會(huì)自動(dòng)刷新,這個(gè)是由微信這邊來(lái)維護(hù)的。 最近團(tuán)隊(duì)在開(kāi)發(fā)一款小程序,都是新手,一邊看文檔,一邊開(kāi)發(fā)。在開(kāi)發(fā)中會(huì)遇到各種問(wèn)題,今天把小程序登錄這塊的流程整理下,做個(gè)記錄。 小程序的登錄跟平時(shí)自己APP這種登錄驗(yàn)證還不太一樣,多了一個(gè)角色,那就是微信服務(wù)器。 showI...

    kid143 評(píng)論0 收藏0
  • 理解小程序

    摘要:小程序的布局信息微信小程序中使用作為長(zhǎng)度單位,可以根據(jù)屏幕寬度進(jìn)行自適應(yīng)。運(yùn)行環(huán)境普通都是執(zhí)行在瀏覽器的宿主環(huán)境,瀏覽器提供等對(duì)象但是小程序是運(yùn)行在微信上下文中的,沒(méi)有和。 小程序堅(jiān)持著 無(wú)需下載、觸手可及、用完即走的設(shè)計(jì)理念和價(jià)值觀,幫助用戶縮短完成任務(wù)的時(shí)間。下面從以下幾點(diǎn)進(jìn)行總結(jié)。總結(jié)是參考三清水老師的小冊(cè)子,推薦大家去購(gòu)買。寫(xiě)的很棒。 1. 小程序能做什么,不能做什么? sho...

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

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

0條評(píng)論

閱讀需要支付1元查看
<