欢迎光临本店     登录 注册   加入收藏
  •   
欢迎光临清华大学出版社第三事业部!

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

当前位置: 首页 > 外版图书 > 计算机与互联网 > 社交应用编程

浏览历史

社交应用编程

社交应用编程

prev next

  • 商品货号:2014051618
  • 商品重量:0克
    作者:(美)勒布兰克(LeBlanc, J.)著;贾洪峰,张丽蘋译
    出版社:清华大学出版社
    图书书号/ISBN:9787302317579
    出版日期:2013年6月第1次印刷
    开本:16
    图书页数:471
    图书装订:平装
    图书规格:178mm×233mm
    版次:2013年6月第1版
    印张:30.75
    字数:688千字
  • 上架时间:2014-05-16
    商品点击数:4184
  • 定价:¥69.00元
    本店售价:¥69.00元
    注册用户:¥69.00元
    vip:¥65.55元
    黄金等级:¥62.10元
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:

内容简介:

商品附加资源

 

内容简介
  本书主要讨论社交网络的相关技术与规范,涉及社交网络应用程序开发、容器规范、体系结构与标准等不同领域。主要内容包括社交应用程序与容器的思想、构建技术、第三方代码与用户信息的安全防护,最后深入研究了分布式Web框架。
  本书适合从事社交网络、社会化体验产品开发工作的专业人员阅读,也可供有兴趣的技术爱好者参考。

前言
    
  我最早开发社交应用是在2007年,当时Facebook开放了它的开发平台,使人们能够体验大量综合社交数据,应用程序可以利用这些数据来提升发展速度,改进目标个性化设置。当时,我正在为CBSSports.com开发社交梦幻运动应用程序,利用用户信息来充实梦幻运动数据,使其呈现高度个性化状态。
  2008年,我加入了Yahoo! Developer Network的合作伙伴集成工作团队,直到这时,我才在通过OpenSocial走向社交应用开发的开源道路上达到了自己的第一个高峰。利用OpenSocial,我们可以将一次构造的应用程序部署到无数OpenSocial容器中,但OpenSocial吸引我的地方并不在此(实践证明这种思路是有缺陷的),而是我们可以通过一种开源方法在容器上开发社交应用程序,并从核心层次来理解这些平台是如何工作的。我非常渴望能够探讨人们在网上建立的关系如何充实他们的线上生活,如何使其更富个性。我倡导开源社交技术的历程就是从这里起步的。
  OpenSocial是我的入门规范,它引导我探索Shindig OpenSocial容器、OpenID和OAuth(分别用于验证和授权)、第三方代码安全技术Caja和ADSafe,还有较新的分布式Web框架规范,如“活动流”(Activity Streams)、PubSubHubbub和“开放图谱”(Open Graph)协议。我很快意识到,有大量的开源技术可用来构建丰富的社交框架。这些技术和规范使用一套非常开放的方法,以一种非常简单的方式来开发丰富的功能层。
  这些社交技术和规范就是本书要讨论的内容。每一章都从一个新的层面揭示了高度传播性社交应用与平台的构建。我们首先研究社交应用与容器背后的思想,然后再深入钻研它们的构建技术。有了这些应用基础之后,我们将研究一些为容器上第三方代码提供安全保护的技术,接下来讨论如何保护用户信息,并为这些平台开发一种标准的登录架构。在揭示了所有这些复杂层面之后,我们将深入研究分布式Web框架,其中包含了一些标准技术,用于整合(syndicate)活动,通过站点和电子信箱地址发现丰富的Web与用户数据。最后,我们将研究社交应用领域即将提出的一些优秀标准。
  本书内容源于多年来直接从事的合作伙伴集成工作,这项工作强调开源技术背后的功能与特性,同时与其他开发人员和公司协同合作,生成丰富的Yahoo!社交集成应用。我直接目睹了社交集成技术是如何应用于现实应用程序及交互的,在此过程中,我既为别人讲解,也从别人那里受教,所以本书完全是出于个人爱好而编写的。
读者对象
  由于本书涉及社交网络应用开发、容器规范、体系结构和标准等众多不同领域,所以它对不同领域、技术熟练程度不一的读者都具有吸引力,其读者对象包括(但不限于)以下几类。
* 社交网络应用开发人员:为Facebook、iGoogle、Orkut、YAP或任何其他承载第三方应用程序的社交网络站点开发应用程序。
* 应用程序平台架构师和服务器端工程师:开发社会化体验产品。
* 前端工程师:希望充分利用大量社交图谱所提供的定制与直接目标定位功能,而这些社交图谱即是利用本书介绍的技术开发的。
* 编程高手和业余开发人员:在社交网络的基础上开发小规模个人项目。
* 开源技术的追随者:希望理解如何使用这些技术来推动社交共享与标准。
* Web开发人员和公司团队:希望开发成员资格系统和安全验证机制。
* 安全性权威与工程师:希望了解线上社交体验中的安全性。
本书内容
  本书涵盖了许多用于处理社交网络的技术与工具,有的用于容器与应用程序开发,有的用于生成参与性很高的社交图谱。
  每一章都以读者在前面各章社交研究中学到的知识为基础。下面给出本书介绍的全部主题,按章分列如下。
* 第1章概述应用程序、系统和开源基础,为读者实现本书其余部分的技术打下坚实的基础。
* 第2章探讨社交图谱背后的思想,将其分解为基本特性。
* 第3章是社交应用开发的基础,引导读者逐步构建一个社交容器,以承载第三方应用程序。
* 第4章研究OpenSocial JavaScript库中内置的扩展技术与功能。
* 第5章和第6章深入探讨OpenSocial规范。我们将研究一个社交平台的各个核心社交内容,从社交图谱的实现到数据体系结构模型。
* 第7章是有关OpenSocial的最后一章,研究了诸如模板化、数据管道方法和OpenSocial的未来等高级OpenSocial主题。
* 第8章介绍第三方代码安全模型,以及一个容器如何使用前端安全系统来保护自己及其用户,以免受恶意代码的伤害。
* 第9章研究通过OAuth实现的用户与应用程序授权机制,深入探讨了OAuth 1和较新的OAuth 2规范。
* 第10章详细介绍了目前正在为构造社交图谱、社交活动及分布式Web框架开发的实验性新技术。
* 第11章和第12章(第12章可从配套网站下载)通过OpenID和OpenID OAuth混合扩展技术的应用,研究了用户验证与验证安全性。
* 第12章、术语表及附录可从本书的配套网站下载(http://www.oreilly.com/ catalog/ 9781449394912)。
使用开源技术栈
  由于本书的重点是使用一种开源栈来讲解社交应用、容器和图谱开发的基础知识,所以,比较谨慎的做法是只讲我们将要研究的技术。
  本书将研究以下主流开源技术:
* OpenSocial,用于探讨社交图谱和应用程序开发。
* Shindig和Partuza,作为使用OpenSocial的容器实现。
* OAuth,用于保护应用程序及用户授权。
* OpenID,用于用户验证,包括混合式OpenID OAuth扩展技术。
* Caja和ADsafe,用于保证前端代码的安全。
* 开放图谱协议,用于研究社交网络实体。
* 活动流,作为提交活动内容的基础。
* WebFinger,使用电子信箱地址发现公共用户数据。
* OExchange,用于与Web上任意其他Web服务共享URL。
* PubSubHubbub,用于整合源于根提供商的对话,发送给多位订阅者。
* Salmon协议,以PubSubHubbub为基础,将发布方与订阅方之间的对话统一起来。
  我们在研究这一组开放性技术时,会将它们与业内目前正在使用的专有标准进行比较。这样可以让我们更好地了解使用开源技术的潜力与蕴涵。
本书中使用的约定
  本书使用以下印刷约定:
  
  这个图标表示重要的提示、建议或通用的说明。

  
  这个图标表示警告或需要注意。
  
示例代码的使用
  本书的目的是帮助你完成工作。通常情况下,可以在你的程序或文档中使用本书中给出的代码。不必联系我们获得代码使用授权,除非你需要使用大量的代码。例如,在写程序的时候引用几段代码不需要向我们申请许可。但以光盘方式销售或重新发行O’Reilly书中的示例的确需要获得许可。引用本书或引用本书中的示例代码来回答问题也不需要申请许可。但是,如果要将本书中的大量范例代码加入你的产品文档,则需要申请许可。
  我们欣赏引用时注明出处的做法,但不强求。引用通常包括书名、作者、出版社和ISBN,例如“Programming Social Applications by Jonathan LeBlanc(O’Reilly). Copyright 2011 Yahoo! Inc., 978-1-449-39491-2”。
  如果觉得使用示例代码的情况不属于前面列出的合理使用或许可范围,请通过电子邮件联系我们,邮箱地址为permissions@oreilly.com

Safari Books Online
  Safari Books Online是一个定制的数字图书馆,可以在此轻松搜索7500多本技术类、创新类的图书和视频,快速返回需要的结果。
  订阅这个数字图书馆后,可以从我们的图书馆在线阅读任何一页内容,观看任何一个视频。可以在手机或移动设备上读书。可以在图书印刷之前获取新书书目,并且可以获取进展中的草稿并向作者提出反馈意见。可以复制和粘贴示例代码,组织自己的收藏夹,下载样章,在关键章节加上书签,做笔记,打印书页,从而享受到很多节约时间的特性。
  O’Reilly Media已将本书英文原版上传到Safari Books Online服务系统。在http://my.safaribooksonline.com免费注册,即可访问完整的本书英文原版电子版以及O’Reilly与其他出版社的同类图书。
联系我们?
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商:
美国:
O’Reilly?Media,?Inc.
1005?Gravenstein?Highway?North
Sebastopol,?CA?95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
  
本书也有相关的网页,我们在上面列出了勘误表、范例以及其他一些信息。网址如下:
http://www.oreilly.com/catalog/9781449394912(英文版)
对本书做出评论或者询问技术问题,请发送E-mail至:
bookquestions@oreilly.com
  
希望获得关于本书、会议、资源中心和O’Reilly网络的更多信息,请访问:
http://www.oreilly.com
http://www.oreilly.com.cn

致谢
  首先,我衷心地感谢我的妻子Heather,感谢她在如此长的时间里“容忍”我疯狂工作和熬夜,感谢她对我的坚定支持。
  还要感谢O’Reilly的Mary Treseler,我有许多问题都是首先征求她的意见,她引导我完成写作。
  感谢本书的审稿编辑Rachel Monaghan对各章提出的中肯意见。
  接下来,我要向本书的所有审阅者表示感谢:Matthew Russell、Bill Day、Henry Saputra和Mark Weitzel和Joseph Catera。感谢他们提前发现各种问题,减少成品中的错误,感谢他们对本书提出的精彩改进建议,还要感谢他们让我剔除一些不够出色、不应放入本书的内容。
  感谢一直支持我的父母和姐姐,他们教导我:功到自然成。
  最后要特别感谢Havi Hoffman,她在Yahoo!负责Yahoo! Press项目的运行。没有她的帮助和支持,本书不可能出版。

目    录

第1章  社交应用容器的核心概念 1
1.1  什么是社交应用容器 2
1.1.1  用户个人资料页 3
1.1.2  用户的亲朋好友 3
1.1.3  用户的活动流 4
1.2  实现专有标准与开放标准 5
1.2.1  专有实现 5
1.2.2  开源实现 6
1.2.3  本书为什么介绍开放
标准 7
1.3  嵌入式应用程序:构建一个
黑盒 7
1.4  嵌入式应用程序的安全性 9
1.4.1  跨站点脚本攻击 9
1.4.2  同源策略与较早的
浏览器 10
1.4.3  偷渡式下载 10
1.4.4  保护应用程序 10
1.5  外部应用程序:集成容器
之外的社交数据 11
1.6  应用程序视图 12
1.6.1  主视图(小视图) 12
1.6.2  个人资料页视图
(小视图) 13
1.6.3  画布视图(大视图) 14
1.6.4  默认视图(任意视图) 15
1.7  应用程序许可概念 16
1.8  客户端与服务器端应用程序 17
1.8.1  为标记层使用模板
系统 17
1.8.2  使用混合式服务器与
客户端环境 18
1.8.3  延缓非关键内容的
载入 18
1.9  阻碍应用程序成功的因素 19
1.9.1  可移植的Flash应用 19
1.9.2  不成熟视图 20
1.9.3  Copycat视图应用 21
1.9.4  共享过度的应用 22
1.9.5  不赢利的应用 22
1.9.6  信息源应用 23
1.10  应用程序模型案例研究 24
1.10.1  案例研究:基于交友
 关系的社交游戏 24
1.10.2  案例研究:产品销售
 应用 28
1.10.3  案例研究:基于位置的
 应用程序 30
1.11  快速提示 34
1.11.1  了解受众 34
1.11.2  尽早构建社交整合点 34
1.11.3  开发时要记得赢利
 这件事 34
1.11.4  生成多种互为补充的
 视图 35
第2章  将用户关系与社交图谱
相对应 37
2.1  网上社交图谱 37
2.2  在网络中应用现实生活中的
社交图谱 39
2.2.1  自动划分用户群集 39
2.2.2  隐私与安全性 40
2.2.3  建立信任 40
2.3  共享隐私用户数据:
选择参与和选择退出 41
2.3.1  选择参与共享模型 41
2.3.2  选择退出共享模型 42
2.4  理解关系模型 42
2.4.1  关注者模型 42
2.4.2  联系人模型 43
2.4.3  群模型 45
2.5  关系与实体 47
2.6  构建社交相关性:探索
Facebook社交图谱 48
2.6.1  以真实身份为基础 49
2.6.2  理解传播渠道 50
2.6.3  构建用户群 50
2.6.4  避免生成不相关的
社交图谱 50
2.7  通过OpenLink协议定义
实体的好恶 51
2.7.1  集成OpenLike小组件 52
2.7.2  如何显示共享的“赞”
的内容 52
2.8  小结 53
第3章  构建社交应用平台的基础 55
3.1  学习内容 55
3.2  Apache Shindig 55
3.3  安装Shindig 56
3.3.1  在Mac OS X (Leopard)
上安装Shindig 57
3.3.2  在Windows上安装
Shindig 60
3.3.3  测试Shindig安装
实例 63
3.4  Partuza 64
3.4.1  要求 64
3.4.2  在Mac OS X (Leopard)上
安装Partuza 65
3.4.3  在Windows上安装
Partuza 67
3.4.4  测试安装的Partuza 72
3.5  OpenSocial小工具
XML规范 72
3.6  用ModulePrefs配置
应用程序 73
3.6.1  Require/Optional 74
3.6.2  Preload 74
3.6.3  Icon 75
3.6.4  Locale 75
3.6.5  Link 76
3.7  定义用户首选项 78
Enum数据类型 78
3.8  应用程序内容 79
3.8.1  定义内容视图 79
3.8.2  内置内容与代理内容 86
3.9  融会贯通 87
第4章  以OpenSocial JavaScript
引用定义功能 91
4.1  学习内容 91
4.2  包含OpenSocial功能
JavaScript库 92
4.3  动态设置小工具视图的高度 92
4.4  在小工具中插入Flash电影 94
4.5  向用户显示消息 95
4.5.1  生成消息 96
4.5.2  设定消息窗口的位置 98
4.5.3  设定消息和窗口的
类型 100
4.6  以用户首选项保存状态 103
4.7  以编程方式设置小工具
标题 104
4.8  集成选项卡式的小工具用户
界面 105
4.8.1  基本小工具 106
4.8.2  根据标记创建选项卡 107
4.8.3  利用JavaScript创建
选项卡 108
4.8.4  获取与设置TabSet的
信息 109
4.9  向Shindig添加自己的
JavaScript库 112
4.10  融会贯通 115
4.10.1  生成小工具XML
 文件 116
4.10.2  使用Shindig显示
 小工具 119
第5章  迁移应用程序、个人资料
和朋友关系 121
5.1  学习内容 121
5.2  评估OpenSocial容器的
支持 122
5.3  OpenSocial规范的核心
组件 123
5.3.1  核心API服务器规范 124
5.3.2  核心小工具容器规范 124
5.3.3  社交API服务器规范 125
5.3.4  社交小工具容器规范 125
5.3.5  OpenSocial容器规范 126
5.4  跨容器开发与迁移 126
5.4.1  使用混合式客户端-
服务器环境 127
5.4.2  将社交功能与主体
应用程序代码拆开 127
5.4.3  避免使用容器特有的
标签 127
5.5  从Facebook向OpenSocial迁移
应用程序 128
5.5.1  为非社交应用构造
采用iframe 128
5.5.2  抽象Facebook功能
逻辑 128
5.5.3  将可视标记与编程逻辑
区分开来 129
5.5.4  使用REST端点,
而不是FQL 129
5.5.5  在服务器端实现大部分
代码 129
5.6  用个人资料数据实现应用
程序的个性化 129
5.6.1  Person对象 130
5.6.2  Person数据抽取方法 130
5.6.3  Person对象中的可用
字段 135
5.6.4  扩展Person对象 156
5.6.5  收集用户个人资料 162
5.7  利用朋友关系增加受众数 164
请求收集用户朋友关系 165
5.8  融会贯通 165
5.8.1  小工具规范 166
5.8.2  Content标记 166
5.8.3  JavaScript 168
5.8.4  运行小工具 169
第6章  OpenSocial活动、共享和
数据请求 171
6.1  学习内容 171
6.2  用OpenSocial活动来推广
应用程序 172
6.2.1  利用活动更新实现
应用程序体验的
个性化 173
6.2.2  通过活动更新增加
应用程序的用户数 174
6.3  直接共享与被动共享 177
6.3.1  直接共享 177
6.3.2  被动共享 179
6.3.3  平衡共享 180
6.4  发出AJAX和外部数据请求 181
6.4.1  发出标准数据请求 182
6.4.2  用数据请求推送内容 183
6.4.3  使用签名请求保护数据
连接的安全 184
6.5  融会贯通 192

第7章  高级OpenSocial和
未来OpenSocial 197
7.1  学习内容 197
7.2  数据管道 198
7.2.1  数据请求类型 200
7.2.2  使数据可供代理数据请
求使用 205
7.2.3  在客户端处理管道化
数据 206
7.2.4  处理由数据管道生成的
错误 209
7.2.5  动态参数 209
7.3  OpenSocial模板化 211
7.3.1  获得标记与数据的不同
方法 213
7.3.2  呈现模板 215
7.3.3  表达式 218
7.3.4  特殊变量 219
7.3.5  条件 221
7.3.6  循环内容 224
7.3.7  将数据管道与模板相结合 228
7.3.8  其他特殊标签 230
7.3.9  模板库 232
7.3.10  JavaScript API 236
7.4  更多标记:OpenSocial标记语言 241
7.4.1  显示人名:os:Name 241
7.4.2  创建人员选择器:os:PeopleSelector 242
7.4.3  显示人员徽章:os:Badge 242
7.4.4  载入外部HTML:os:Get 242
7.5  用消息包支持本地化 243
7.6  OpenSocial REST API库 245可用库 246
7.7  未来OpenSocial:探索领域 246
7.7.1  企业容器 247
7.7.2  移动转换 247
7.7.3  分布式Web框架 247
7.8  OpenSocial和分布式Web框架 248
7.8.1  活动流 248
7.8.2  PubSubHubbub 248
7.8.3  Salmon协议 249
7.8.4  开放图谱协议 250
7.9  融会贯通 251
第8章  社交应用安全概念 257
8.1  学习内容 257
8.2  通过iframe托管第三方代码 258
8.3  安全方法:Caja项目 258
8.4  为什么使用Caja 258
8.5  攻击向量:Caja如何提供保护 259
8.5.1  未经用户同意对其
进行重定向 259
8.5.2  挖掘用户的浏览历史 260
8.5.3  用document.createElement
执行任意代码 261
8.5.4  记录用户的击键操作 261
8.6  安装Caja 263
8.7  从命令行清理脚本 265
8.7.1  清理HTML和JavaScript 265
8.7.2  修改清理器呈现格式 270
8.8  从Web应用程序运行Caja 270
8.9  用OpenSocial小工具运行Caja 272
8.9.1  向小工具添加Caja 273
8.9.2  实例 273
8.10  使用JSLint尽早发现
 JavaScript问题 275
8.11  使用Caja Playground 276
8.12  Caja环境中的使用技巧 276
8.12.1  实现代码模块化:
 不要清理整个项目 277
8.12.2  使用预清理的
 JavaScript库 277
8.12.3  不要依靠Firebug或经过
 清理的JavaScript源代码 278
8.12.4  不要在标记中嵌入事件 279
8.12.5  集中JavaScript:
 仅请求数据和标记 280
8.13  Caja的轻量替代方法: ADsafe 281
8.14  ADsafe与Caja的对比:
 应当使用哪种方法 282
8.15  如何实现ADsafe 283
8.15.1  设置ADsafe对象 283
8.15.2  DOM对象 284
8.15.3  用查询方法选择 DOM 286
8.15.4  使用群束对象 290
8.15.5  附加事件 296
8.15.6  定义库 298
8.16  融会贯通 299
8.16.1  数据源 300
8.16.2  标头:脚本和样式 300
8.16.3  主体:标记层 301
8.16.4  主体:JavaScript层 302
8.16.5  最终结果 303
8.17  小结 304
第9章  用OAuth保护社交图谱访问的安全 305
9.1  超越基本验证 305
9.1.1  基本验证实现:
工作方式 306
9.1.2  反对使用基本验证的理由 307
9.2  OAuth 1.0a标准 308
9.2.1  OAuth 1.0a工作流程 309
9.2.2  最终用户体验 316
9.2.3  两方OAuth与三方
OAuth的对比 318
9.2.4  三方OAuth实现示例 322
9.2.5  调试签名问题的工具与技巧 337
9.3  OAuth 2 340
9.3.1  OAuth 2工作流程 340
9.3.2  实现示例:Facebook 348
9.3.3  实现示例:在Facebook
OAuth进程中请求更多的用户信息 358
9.3.4  实现示例:最终用户体验 360
9.3.5  调试请求问题的技巧 361
9.4  小结 365
第10章  社交的未来:通过分布式Web 框架定义社交实体 367
10.1  学习内容 367
10.2  开放图谱协议:将Web页定义为社交实体 368
10.2.1  元数据的兴起与衰落 368
10.2.2  开放图谱协议如何工作 369
10.2.3  实现开放图谱协议 370
10.2.4  实例:Facebook开放 图谱 375
10.2.5  实例:从Web源收集 开放图谱数据 378
10.2.6  开放图谱协议的缺点 384
10.3  活动流:社交活动的 标准化 385
10.3.1  为什么需要定义一个活动标准 385
10.3.2  实施“活动流” 386
10.3.3  对象类型 390
10.3.4  动词 391
10.4  WebFinger:通过电子信箱 地址扩展社交图谱 393
10.4.1  从finger到WebFinger:WebFinger的起源 393
10.4.2  实现WebFinger 394
10.4.3  WebFinger协议的缺点 396
10.5  OExchange:构建社交共享 图谱 397
10.5.1  OExchange如何
 工作 397
10.5.2  OExchange的用途 398
10.5.3  实现OExchange 399
10.6  PubSubHubbub:内容整合 404
10.6.1  PubSubHubbub 如何工作 404
10.6.2  好处:从发布者到 订阅者 407
10.6.3  托管Hub和实现 服务 408
10.6.4  工作流程库 409
10.6.5  用PHP构建发布者 410
10.6.6  用Python构建 发布者 412
10.6.7  用PHP构建订阅者 414
10.6.8  用Python构建订阅者 417
10.7  Salmon协议:会话实体的 统一 419
10.7.1  Salmon协议工作流程 419
10.7.2  建立在PubSubHubbub的基础之上 421
10.7.3  防止滥用与垃圾 信息 422
10.7.4  实现概述 422
10.8  小结 424
第11章  用OpenID扩展社交图谱 425
11.1  OpenID标准 425
11.1.1  分散是关键 425
11.1.2  相对于传统登录的 改进 426
11.1.3  访问现有成员身份 数据库和社交图谱 426
11.2  我是否已经拥有OpenID, 如何注册一个 426
11.3  OpenID验证流程 427
11.4  OpenID提供商 432
11.5  绕过OpenID中的域发现错误 433
11.6  OpenID扩展 434
11.6.1  “简单注册”扩展 435
11.6.2  “属性交换”扩展 436
11.6.3  提供商验证策略扩展 441
11.6.4  当前正在开发的扩展 445
11.7  OpenID实例 446
11.7.1  使用PHP实现 OpenID 447
11.7.2  使用Python实现 OpenID 458
11.8  常见错误与调试技巧 469
11.8.1  回调URL失配 469
11.8.2  无法发现的OpenID标识符 470
11.9  小结 471

  

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha