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.mzph.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岁…