MIP 網站中熊掌號登錄

標題內容
類型通用
支持布局responsive,fixed-height,fill,container,fixed
所需腳本https://c.mipcdn.com/static/v1/mip-mustache/mip-mustache.js https://c.mipcdn.com/static/v1/mip-login-xzh/mip-login-xzh.js

注意:使用該組件必須在引用本組件鏈接前引用 <script src="https://c.mipcdn.com/static/v1/mip-mustache/mip-mustache.js"></script>

流程圖

這里寫圖片描述

示例

基本用法
<mip-my-comment id="comment"><h2>評論-自定義組件</h2><p>評論組件默認認為未登錄,向熊掌號登錄組件添加 <code>login</code> 事件時觸發評論組件的 <code>check</code> 方法。</p><ul><li>第一條評論</li><li>第兩條評論</li><li>第三條評論</li></ul><div class="my-comment-editor">當前沒有登錄,<button on="tap:user.login">登錄</button></div>
</mip-my-comment><mip-login-xzh
    id="user"data-endpoint="https://www.example.com/api/userinfo.php"data-client-id="testid"on="login:comment.login logout:comment.exit"
><template type="mip-mustache">{{#name}}hi,{{name}},歡迎回來。{{/name}}{{^name}}你沒有<button on="tap:user.login">登錄</button>哦。{{/name}}</template><h3>上面只是一個登錄狀態的渲染片段</h3><template type="mip-mustache">{{#name}}hi,{{name}},個人中心。可以是多個 template 標簽{{/name}}</template>
</mip-login-xzh><button on="tap:user.login">登錄</button>
<button on="tap:user.logout">退出</button>

<mip-my-comment> 組件部分 JS 代碼:


/*** @file mip-my-comment 組件* @author MIP*/define(function (require) {
    'use strict';var customElement = require('customElement').create();var $ = require('zepto');customElement.prototype.build = function () {// 綁定評論登錄this.addEventAction('login', function (event) {// 這里可以輸出登錄之后的數據// 獲取用戶信息event.userInfo;// 后端交互會話標識event.sessionId;});};return customElement;
});
實現購買按鈕邏輯
<mip-login-xzhid="userlogin"...>...<template type="mip-mustache">{{#demoname}}<a href="/order/1.html" data-type="mip">購買</a>{{/demoname}}{{^demoname}}<a href="#" on="tap:userlogin.login">請先登錄</a>{{/demoname}}</template>...
</mip-login-xzh>
實現個人中心
<mip-login-xzhid="userlogin"data-autologin="true"...>...<template type="mip-mustache"><ul><li>hi,{{demoname}},你上次登錄時間為 {{lasttime}} 。</li><li><a href="/order/list.html" data-type="mip">訂單中心</a></li><li><a href="#" on="tap:userlogin.logout">退出</a></li></ul></template>...
</mip-login-xzh>
和 mip-bind 配合使用
<mip-data><script type="application/json">{"user": {}}</script>
</mip-data><p>是否登錄:<input m-bind:checked="user.isLogin" type="checkbox"><span m-text="String(user.isLogin || false)"></span>
</p>
<p>會話標識:<span m-text="user.sessionId || '空'"></span>
</p>
<p>頭像地址:<span m-text="user.userInfo.avatar || '空'"></span>
</p><mip-login-xzh
    id="user"...></mip-login-xzh><script src="https://c.mipcdn.com/static/v1/mip-bind/mip-bind.js"></script>
<script src="https://c.mipcdn.com/static/v1/mip-mustache/mip-mustache.js"></script>
<script src="https://c.mipcdn.com/static/v1/mip-login-xzh/mip-login-xzh.js"></script>

和 mip-bind 配合使用注意:

  1. mip-bind.js 必須在登錄組件前引用
  2. 必須設置登錄組件的 id 屬性
  3. 必須在 <mip-data> 配置數據中設置一個以組件 id 為鍵名(key)的對象數據
  4. 在請求登錄(type=login)、檢查是否登錄(type=check)、退出(type=logout)成功時,會調用 MIP.setData 設置數據,數據結構為:
 {"組件id": {"isLogin": Boolean,"userInfo": Response.data,"sessionId": String}
}

屬性

id

說明:頁面全局唯一 ID ,用來在其他元素中使用登錄組件功能的入口
必選項:否
類型:string
示例:id="userlogin"

data-client-id

說明:熊掌號后端申請的 client_id
必選項:是
類型:string
示例:data-client-id=”testid”

data-autologin

說明:頁面打開后未登錄狀態下自動跳轉登錄,常用于必須登錄狀態下才可以訪問的頁面
必選項:否
類型:boolean
示例:data-autologin="true"
默認值:false

data-endpoint

說明:后端源站數據接口鏈接,需要使用 https:// 或者 // 開頭的源站地址,需要接口支持 HTTPS ,使用 POST 形式發送數據
必選項:是
類型:string
示例:data-endpoint="https://api.example.com/user/info.php"
說明:后端跨域說明 、后端數據說明 、會話憑證 sessionId

組件方法和事件

登錄方法 - <div on="tap:登錄組件id.login">

在其他元素中綁定點擊時跳轉登錄頁面。

注意:該方法會重新打開一個熊掌號登錄頁面,在登錄成功后會透傳 code 返回到當前頁面,組件重新使用 code 參數去請求后端接口,這將導致當前頁面未存儲的數據丟失,如:表單用戶填寫內容。

退出方法 - <div on="tap:登錄組件id.logout">

在其他元素中綁定點擊時請求退出接口。

注意:該方法不會跳轉頁面,異步的調用 data-endpoint 接口去退出,并觸發登錄組件元素中的 logout:其他組件id.其他組件行為 事件。

登錄成功事件 - <mip-login-xzh on="login:其他組件id.其他組件行為">

在登錄成功時調用其他組件的組件行為。

這里寫代碼片登錄失敗事件 - <mip-login-xzh on="error:其他組件id.其他組件行為">

在登錄請求后端返回值錯誤時觸發。

退出成功事件 - <mip-login-xzh on="logout:其他組件id.其他組件行為">

在退出登錄時(由 on=”tap:組件id.logout” 調用觸發)調用其他組件的組件行為。

注意事項

配置百度熊掌號-網頁授權域名

在熊掌號運營管理平臺添加兩個網頁授權域名:

  • 網站主域名 - 需要在登錄組件的域名
  • MIP-Cache 域名: mipcache.bdstatic.com
  • MIP-Cache站點域名,規則:域名(.換成-).mipcdn.com,如:
    www.mipengine.org ->www-mipengine-org.mipcdn.com
    demo.www.mipengine.org ->demo-www-mipengine-org.mipcdn.com
后端需要支持 CORS + withCredentials

CORS 文檔
withCredentials 附帶身份憑證的請求
登錄組件(mip-login-xzh)已經在前端發送請求時處理了 withCredentials ,需要對應的接口服務響應頭設置:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: 對應請求的 origin

注意:出于安全考慮請對來源的 origin 進行判斷,并正確的返回 Access-Control-Allow-Origin 字段,不能為 * 。

3. 后端數據說明

頁面加載完成檢查用戶數據

請求:

名稱說明
請求鏈接data-endpoint
請求類型POST
請求參數{type: 'check', sessionId: '會話憑證'}

未登錄返回值說明:

{"status": 0,"sessionId": "會話憑證,必須返回","data": null
}

已登錄返回值,整個返回值的 data 字段將認為是用戶數據,在模板渲染時使用該數據渲染:

{"status": 0,"sessionId": "會話憑證,必須返回","data": {"name": "mipengine","key2": "value2"}
}

注意:上面 data.name 只是示例,具體什么數據請前、后端統一約定。

熊掌號登錄

請求:

名稱說明
請求鏈接data-endpoint
請求類型POST
請求參數{type: 'login', code: '熊掌號授權code', redirect_uri: '回調鏈接'}

源站后端服務需要使用 coderedirect_uri 參數去請求 獲取網頁授權 access_token 、獲取授權用戶信息 接口,并和源站的用戶關聯、記錄用戶登錄狀態。
處理成功,認為已登錄,整個返回值的 data 字段將認為是用戶數據,在模板渲染時使用該數據渲染:

{"status": 0,"sessionId": "會話憑證,必須返回","data": {"name": "mipengine","key2": "value2"}
}

如果 status 不為 0 觸發 error 事件,如:

{"status": 403
}

退出

請求:

名稱說明
請求鏈接data-endpoint
請求類型POST
請求參數{type: 'logout'}

返回值說明:

{"status": 0,"data": {"url": "https://www.example.com 退出成功跳轉的鏈接地址 可選","title": "主頁 自定義標題 可選"}
}
4. 會話憑證 sessionId

由于在 iOS 對跨域透傳 cookie 的限制(https://webkit.org/blog/7675/intelligent-tracking-prevention/),在前端組件請求后端接口時(type=checktype=login),由后端生成當前會話唯一憑證并記錄到服務端,把憑證返回前端 response.sessionId,前端組件將在 localStorage 中緩存下來,在下次發后端接口請求時攜帶該憑證,后端就當優先使用 cookie/session 驗證,不存在時獲取 POST 參數中的 sessionId 去校驗。

注意:本地 localStorage 是以 data-endpoint 為粒度去緩存。

5. 組件內部模板 <template> 渲染和觸發事件

組件內支持多個 <template type="mip-mustache"> 模板標簽,在渲染時會把渲染的結果輸出到 <div> 元素中,并且插入到 <template> 元素下方,如:
這里寫圖片描述
渲染和觸發事件邏輯:

頁面加載完成 - 因未登錄,使用空數據({})渲染模板
頁面請求用戶信息
code - 發送登錄數據
錯誤 - 觸發 error 事件
成功
使用 response.data 重新渲染模板
觸發 login 事件
code
未登錄 - 忽略
已登錄
使用 response.data 重新渲染模板
觸發 login 事件
頁面觸發 登錄組件ID.login 事件
未登錄 - 跳轉熊掌號登錄授權頁面
已登錄 - 忽略
頁面觸發 登錄組件ID.logout 事件
未登錄 - 忽略
已登錄
后端返回 response.data.url
跳轉到 response.data.url
后端沒有返回 response.data.url
觸發 logout 事件
使用空數據({})渲染模板

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

日常問題——hadoop 任務運行到running job就卡住了 INFO mapreduce.Job: Running job: job_1595222530661_0003

執行mapreduce沒報錯&#xff0c;可是任務運行到running job就卡住在 INFO mapreduce.Job: Running job: job_1595222530661_0003 解決方法 mapred-site.xml下將 <property><name>mapreduce.framework.name</name><value>yarn</value> </pr…

MIP 支付組件,支付流程:

MIP 支付組件&#xff0c;支付流程&#xff1a; 標題內容類型通用支持布局responsive,fixed-height,fill,container,fixed所需腳本https://c.mipcdn.com/static/v1/mip-simple-pay/mip-simple-pay.js,https://c.mipcdn.com/static/v1/mip-login-xzh/mip-login-xzh.js 注意&…

代碼實現——MapReduce統計單詞出現次數

需求 對以下txt文檔進行單詞出現次數統計&#xff08;txt文檔在/Users/lizhengi/test/input/目錄下&#xff09; hadoop take spring spark hadoop hdfs mapreduce take Tomcat tomcat kafka kafka flume flume hive實現 1、新建Maven工程&#xff0c;pom.xml依賴如下 <…

MIP個性化組件提交規范

MIP個性化組件一般用來實現前后端數據傳輸或特殊的交互效果&#xff0c;由廣大開發者貢獻。出于性能、可維護性等方面的考慮&#xff0c;開發者在新增組件或升級組件時&#xff0c;請遵守以下規范。 規范中的必須&#xff08;MUST&#xff09;&#xff0c;禁止&#xff08;MUS…

jar包在Hadoop集群上測試(MapReduce)

本片使用MapReduce——統計輸出給定的文本文檔每一個單詞出現的總次數的案例進行&#xff0c;jar包在集群上測試 1、添加打包插件依賴 <build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.6.2</versio…

代碼實現——MapReduce實現Hadoop序列化

簡單介紹 1、什么是序列化 序列化&#xff1a;把內存中的對象&#xff0c;轉換成字節序列(或其他數據傳輸協議)以便于存儲到磁盤(持久化)和網絡傳輸。反序列化&#xff1a;將收到字節序列(或其他數據傳輸協議)或者是磁盤的持久化數據&#xff0c;轉換成內存中的對象。 2、 為…

日常問題——hadoop啟動后發現namenode沒有啟動,但是排除了格式化過度的問題

hadoop啟動后發現namenode沒有啟動&#xff0c;網上說的格式化過度的問題我是沒有的&#xff0c;因為我只格式化過一次。之后查看日志 vim /opt/hadoop/logs/namenode對應的log文件 發現 2020-03-03 23:16:21,868 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Na…

Zookeeper3.6.1常用的Shell命令

1、客戶端連接 zkCli.sh zkCli.sh -server host:port2、顯示節點信息 -s狀態 -w監聽器 -R遞歸 ls [-s] [-w] [-R] path3、創建節點 -s加序列號 -e臨時節點 create [-s] [-e] path [data]4、獲取節點值 -s狀態 -w監聽器 get [-s] [-w] path5、設置節點值 -s狀態 set [-s] […

CentOS7下MySQL5.7的安裝

1、下載MySQL 安裝包&#xff1a; wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmyum -y localinstall mysql57-community-release-el7-11.noarch.rpm 2、在線安裝MySQL yum -y install mysql-community-server 3、啟動mysql 服務 systemct…

CentOS7下Hive的安裝配置

0、安裝前提 安裝配置jdk與hadoop安裝配置好mysql 1、下載上傳 下載hive&#xff0c;地址:http://mirror.bit.edu.cn/apache/hive/上傳到指定位置scp apache-hive-3.1.2-bin.tar.gz rootCarlota1:/usr/local/apps 2、解壓安裝 tar -zxvf apache-hive-3.1.2-bin.tar.gzmv a…

Hive常用的操作命令

Hive常用的交互命令 hive 進入數據庫hive -e 不進入hive的交互窗口執行sql語句hive -f 執行sql腳本hive -help 查看幫助 Hive常用數據庫的操作命令 show databases;查看hive中的所有數據庫use default;用default數據庫create database myhive ;創建數據庫create database if…

Hive常見的屬性配置

配置文件 默認配置文件&#xff1a;hive-default.xml 用戶自定義配置文件&#xff1a;hive-site.xml 用戶自定義配置會覆蓋默認配置。另外&#xff0c;Hive也會讀入Hadoop的配置&#xff0c;因為Hive是作為Hadoop的客戶端啟動的&#xff0c;Hive的配置會覆蓋Hadoop的配置。配…

什么是集群(cluster)

1、集群 1.1 什么是集群 簡單的說&#xff0c;集群(cluster)就是一組計算機&#xff0c;它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點(node)。一個理想的集群是&#xff0c;用戶從來不會意識到集群系統底層的節點&#xff0c;在他/她們看來&am…

Kafka:集群部署

0、環境準備 安裝jdk&#xff0c;配置環境提前安裝zookeeper 1、解壓安裝 將tar壓縮包上傳tar -zxvf kafka_2.12-2.5.0.tgz 2、配置變量環境 vi /etc/profile #kafka export KAFKA_HOME/usr/local/apps/kafka_2.12-2.5.0 export PATH$PATH:$KAFKA_HOME/binsource /etc/pr…

集群(cluster)amp;高可用性(HA)概念

1.1 什么是集群 簡單的說&#xff0c;集群&#xff08;cluster&#xff09;就是一組計算機&#xff0c;它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點&#xff08;node&#xff09;。一個理想的集群是&#xff0c;用戶從來不會意識到集群系…

Kafka:常用命令

啟動Kafka&#xff1a;kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties創建一個叫test的話題&#xff0c;有兩個分區&#xff0c;每個分區3個副本&#xff1a;kafka-topics.sh --zookeeper localhost:2181 --create --topic test --replication-factor 3 …

MySQL Cluster 群集安裝環境介紹

MySQL Cluster 群集安裝環境介紹 MySQL 群集支持的操作系統:* Linux (Red Hat, Novell/SUSE) * Sun Solaris * IBM AIX * HP-UX * Mac OS X MySQL 軟件:* MySQL Max 版本 (並不是指 MaxDB)* MySQL NDB Cluster 系統最低需求&#xff1a; OS&#xff1a; Linux ( Turbolinux…

八股文打卡day9——計算機網絡(9)

面試題&#xff1a;HTTP1.0和HTTP1.1的區別&#xff1f; 我的回答&#xff1a; 1.長連接&#xff1a;HTTP1.1引入了長連接的機制&#xff0c;connection&#xff1a;keep-alive。一個TCP連接可以進行多次請求和響應。而HTTP1.0每次請求響應一次都得建立連接、斷開連接。 引入…

使用ogg實現oracle到kafka的增量數據實時同步

Oracle Golden Gate軟件是一種基于日志的結構化數據復制備份軟件&#xff0c;它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化&#xff0c;再將這些變化應用到目標數據庫&#xff0c;從而實現源數據庫與目標數據庫同步。 0、本篇中源端和目標端的一些配置信息&#xf…

轉載:35歲前成功的12條黃金法則

習慣的力量是驚人的。習慣能載著你走向成功&#xff0c;也能馱著你滑向失敗。如何選擇&#xff0c;完全取決于你自己。 1.習慣的力量&#xff1a;35歲以前養成好習慣 你想成功嗎&#xff1f;那就及早培養有利于成功的好習慣。 習慣的力量是驚人的&#xff0c;35歲…