SharePoint REST API

来源:互联网 发布:淘宝网计生用品 编辑:程序博客网 时间:2024/05/16 11:20

SharePoint网站、列表和列表项都属于SecurableObject类型。默认情况下,一个安全对象继承父级的权限。对一个对象设置自定义权限,你需要打破它从父级的继承,通过增删role assignments来自定义权限。

本篇同样会以代码示例来说明如何在列表上设置自定义权限,然后再更改一个组的权限。该示例使用REST服务来:

>获取目标组的ID。该示例通过目标组的ID来获取当前列表上的组所具有的角色绑定,并向列表添加新的角色。

>获取为组定义的新的权限的角色定义的ID,该ID用来向列表添加新的角色。该示例使用已存在的角色定义来定义新的角色,当然你也可以选择创建一个新的角色定义。

>使用BreakRoleInheritance方法打破列表上的权限继承。该示例打破了列表的权限继承并保留当前的权限设置。(在打破权限继承的时候,也可以选择不保留当前的设置而只把当前用户添加到管理权限级别。)

>通过发送DELETE方法请求到role assignment端点来移除列表上的组当前的role assignment。(如果你在打破权限继承的时候没有保留现有设置,可以忽略此步。)

>使用AddRoleAssignment方法向组添加一个role assignment到目标列表,该操作会将组绑定到一个角色定义并将该角色添加到列表上。

前置条件

>SharePoint开发环境

>带有Office Developer Tools的Visual Studio 2013或更高版本

此外还需要设置Add-in在网站范围内的完全控制权限,只有具有足够权限来更改列表权限的用户(如网站所有者)可以执行这个add-in。

示例:使用REST接口在列表上自定义权限

下面的示例展示了一个SharePoint承载的Add-in中的App.js文件的内容。第一个示例使用JavaScript跨域库来构建和发送HTTP请求,第二个示例使用jQuery AJAX请求。在你执行代码之前,需要把占位符的值替换成真实的值。

示例一:跨域库请求

[javascript] view plain copy
  1. 'use strict';  
  2.   
  3. // Change placeholder values before you run this code.  
  4. var listTitle = 'List 1';  
  5. var groupName = 'Group A';  
  6. var targetRoleDefinitionName = 'Contribute';  
  7. var appweburl;  
  8. var hostweburl;  
  9. var executor;  
  10. var groupId;  
  11. var targetRoleDefinitionId;  
  12.   
  13. $(document).ready( function() {  
  14.   
  15.     //Get the URI decoded URLs.  
  16.     hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));  
  17.     appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));  
  18.   
  19.     // Load the cross-domain library file and continue to the custom code.  
  20.     var scriptbase = hostweburl + "/_layouts/15/";  
  21.     $.getScript(scriptbase + "SP.RequestExecutor.js", getTargetGroupId);  
  22. });  
  23.   
  24. // Get the ID of the target group.  
  25. function getTargetGroupId() {  
  26.     executor = new SP.RequestExecutor(appweburl);  
  27.     var endpointUri = appweburl + "/_api/SP.AppContextSite(@target)/web/sitegroups/getbyname('";  
  28.     endpointUri += groupName + "')/id" + "?@target='" + hostweburl + "'";  
  29.   
  30.     executor.executeAsync({  
  31.         url: endpointUri,  
  32.         method: 'GET',  
  33.         headers: { 'accept':'application/json;odata=verbose' },  
  34.         success: function(responseData) {  
  35.             var jsonObject = JSON.parse(responseData.body);  
  36.             groupId = jsonObject.d.Id;  
  37.             getTargetRoleDefinitionId();  
  38.         },  
  39.         error: errorHandler  
  40.    });  
  41. }  
  42.   
  43. // Get the ID of the role definition that defines the permissions  
  44. // you want to assign to the group.  
  45. function getTargetRoleDefinitionId() {  
  46.     var endpointUri = appweburl + "/_api/SP.AppContextSite(@target)/web/roledefinitions/getbyname('";  
  47.     endpointUri += targetRoleDefinitionName + "')/id" + "?@target='" + hostweburl + "'";  
  48.   
  49.     executor.executeAsync({  
  50.         url: endpointUri,  
  51.         method: 'GET',  
  52.         headers: { 'accept':'application/json;odata=verbose' },  
  53.         success: function(responseData) {  
  54.             var jsonObject = JSON.parse(responseData.body)  
  55.             targetRoleDefinitionId = jsonObject.d.Id;  
  56.             breakRoleInheritanceOfList();  
  57.         },  
  58.         error: errorHandler  
  59.     });  
  60. }  
  61.   
  62. // Break role inheritance on the list.  
  63. function breakRoleInheritanceOfList() {  
  64.     var endpointUri = appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('";  
  65.     endpointUri += listTitle + "')/breakroleinheritance(true)?@target='" + hostweburl + "'";  
  66.   
  67.     executor.executeAsync({  
  68.         url: endpointUri,  
  69.         method: 'POST',  
  70.         headers: { 'X-RequestDigest':$('#__REQUESTDIGEST').val() },  
  71.         success: deleteCurrentRoleForGroup,  
  72.         error: errorHandler  
  73.     });  
  74. }  
  75.   
  76. // Remove the current role assignment for the group on the list.  
  77. function deleteCurrentRoleForGroup() {  
  78.     var endpointUri = appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('";  
  79.     endpointUri += listTitle + "')/roleassignments/getbyprincipalid('" + groupId + "')?@target='" + hostweburl + "'";  
  80.   
  81.     executor.executeAsync({  
  82.         url: endpointUri,  
  83.         method: 'POST',  
  84.         headers: {   
  85.             'X-RequestDigest':$('#__REQUESTDIGEST').val(),  
  86.             'X-HTTP-Method':'DELETE'  
  87.         },  
  88.         success: setNewPermissionsForGroup,  
  89.         error: errorHandler  
  90.     });  
  91. }  
  92.   
  93. // Add the new role assignment for the group on the list.  
  94. function setNewPermissionsForGroup() {  
  95.     var endpointUri = appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('";  
  96.     endpointUri += listTitle + "')/roleassignments/addroleassignment(principalid=" + groupId;  
  97.     endpointUri += ",roledefid=" + targetRoleDefinitionId + ")?@target='" + hostweburl + "'";  
  98.   
  99.     executor.executeAsync({  
  100.         url: endpointUri,  
  101.         method: 'POST',  
  102.         headers: { 'X-RequestDigest':$('#__REQUESTDIGEST').val() },  
  103.         success: successHandler,  
  104.         error: errorHandler  
  105.     });  
  106. }  
  107.   
  108. // Get parameters from the query string.  
  109. // For production purposes you may want to use a library to handle the query string.  
  110. function getQueryStringParameter(paramToRetrieve) {  
  111.     var params = document.URL.split("?")[1].split("&");  
  112.     for (var i = 0; i < params.length; i = i + 1) {  
  113.         var singleParam = params[i].split("=");  
  114.         if (singleParam[0] == paramToRetrieve) return singleParam[1];  
  115.     }  
  116. }  
  117.   
  118. function successHandler() {  
  119.     alert('Request succeeded.');  
  120. }   
  121.   
  122. function errorHandler(xhr, ajaxOptions, thrownError) {  
  123.     alert('Request failed: ' + xhr.status + '\n' + thrownError + '\n' + xhr.responseText);  
  124. }  
示例二:jQuery AJAX请求
[javascript] view plain copy
  1. // Change placeholder values before you run this code.  
  2. var siteUrl = 'http://server/site';  
  3. var listTitle = 'List 1';  
  4. var groupName = 'Group A';  
  5. var targetRoleDefinitionName = 'Contribute';  
  6. var groupId;  
  7. var targetRoleDefinitionId;  
  8.   
  9. $(document).ready( function() {  
  10.     getTargetGroupId();  
  11. });  
  12.   
  13. // Get the ID of the target group.  
  14. function getTargetGroupId() {  
  15.     $.ajax({  
  16.         url: siteUrl + '/_api/web/sitegroups/getbyname(\'' + groupName + '\')/id',  
  17.         type: 'GET',  
  18.         headers: { 'accept':'application/json;odata=verbose' },  
  19.         success: function(responseData) {  
  20.             groupId = responseData.d.Id;  
  21.             getTargetRoleDefinitionId();  
  22.         },  
  23.         error: errorHandler  
  24.    });  
  25. }  
  26.   
  27. // Get the ID of the role definition that defines the permissions  
  28. // you want to assign to the group.  
  29. function getTargetRoleDefinitionId() {  
  30.     $.ajax({  
  31.         url: siteUrl + '/_api/web/roledefinitions/getbyname(\''  
  32.             + targetRoleDefinitionName + '\')/id',  
  33.         type: 'GET',  
  34.         headers: { 'accept':'application/json;odata=verbose' },  
  35.         success: function(responseData) {  
  36.             targetRoleDefinitionId = responseData.d.Id;  
  37.             breakRoleInheritanceOfList();  
  38.         },  
  39.         error: errorHandler  
  40.     });  
  41. }  
  42.   
  43. // Break role inheritance on the list.  
  44. function breakRoleInheritanceOfList() {  
  45.     $.ajax({  
  46.         url: siteUrl + '/_api/web/lists/getbytitle(\'' + listTitle  
  47.             + '\')/breakroleinheritance(true)',  
  48.         type: 'POST',  
  49.         headers: { 'X-RequestDigest':$('#__REQUESTDIGEST').val() },  
  50.         success: deleteCurrentRoleForGroup,  
  51.         error: errorHandler  
  52.     });  
  53. }  
  54.   
  55. // Remove the current role assignment for the group on the list.  
  56. function deleteCurrentRoleForGroup() {  
  57.     $.ajax({  
  58.         url: siteUrl + '/_api/web/lists/getbytitle(\'' + listTitle  
  59.             + '\')/roleassignments/getbyprincipalid(' + groupId + ')',  
  60.         type: 'POST',  
  61.         headers: {   
  62.             'X-RequestDigest':$('#__REQUESTDIGEST').val(),  
  63.             'X-HTTP-Method':'DELETE'  
  64.         },  
  65.         success: setNewPermissionsForGroup,  
  66.         error: errorHandler  
  67.     });  
  68. }  
  69.   
  70. // Add the new role assignment for the group on the list.  
  71. function setNewPermissionsForGroup() {  
  72.     $.ajax({  
  73.         url: siteUrl + '/_api/web/lists/getbytitle(\'' + listTitle  
  74.             + '\')/roleassignments/addroleassignment(principalid='  
  75.             + groupId + ',roledefid=' + targetRoleDefinitionId + ')',  
  76.         type: 'POST',  
  77.         headers: { 'X-RequestDigest':$('#__REQUESTDIGEST').val() },  
  78.         success: successHandler,  
  79.         error: errorHandler  
  80.     });  
  81. }  
  82.   
  83. function successHandler() {  
  84.     alert('Request succeeded.');  
  85. }   
  86.   
  87. function errorHandler(xhr, ajaxOptions, thrownError) {  
  88.     alert('Request failed: ' + xhr.status + '\n' + thrownError + '\n' + xhr.responseText);  
  89. }  
http://www.chengshiluntan.com/6917210-1.html
http://www.chengshiluntan.com/6917406-1.html
http://www.chengshiluntan.com/6917415-1.html
http://www.chengshiluntan.com/6917442-1.html
http://www.chengshiluntan.com/6917466-1.html
http://www.chengshiluntan.com/6917478-1.html
http://www.chengshiluntan.com/6917498-1.html
http://www.chengshiluntan.com/6917537-1.html
http://www.chengshiluntan.com/6917590-1.html
http://www.chengshiluntan.com/6917604-1.html
http://baijiahao.baidu.com/builder/preview/s?id=1582026938020897352
http://baijiahao.baidu.com/builder/preview/s?id=1582039159015647408
http://baijiahao.baidu.com/builder/preview/s?id=1582039360113121208
http://baijiahao.baidu.com/builder/preview/s?id=1582039573322455310
http://baijiahao.baidu.com/builder/preview/s?id=1582039718004335961
http://baijiahao.baidu.com/builder/preview/s?id=1582039909318708132
http://www.19lou.com/board-73061508556280516-thread-76581508739143051-1.htm
https://www.wang1314.com/doc/topic-6657294-1.html
https://www.wang1314.com/doc/topic-6658374-1.html
https://www.wang1314.com/doc/topic-6658633-1.html
https://www.wang1314.com/doc/topic-6658924-1.html
https://www.wang1314.com/doc/topic-6659557-1.html
https://www.wang1314.com/doc/topic-6659680-1.html
https://www.wang1314.com/doc/topic-6659864-1.html
https://www.wang1314.com/doc/topic-6660005-1.html
https://www.wang1314.com/doc/topic-6660666-1.html
https://www.wang1314.com/doc/topic-6609646-1.html
http://www.51sole.com/b2b/sides126186361.html
http://www.51sole.com/b2b/sides126186624.html
http://www.51sole.com/b2b/sides126186686.html
http://www.51sole.com/b2b/sides126186772.html
http://www.51sole.com/b2b/sides126187022.html
http://www.51sole.com/b2b/sides126187055.html
http://www.51sole.com/b2b/sides126187096.html
http://www.51sole.com/b2b/sides126187127.html
http://www.51sole.com/b2b/sides126187238.html
http://www.51sole.com/b2b/sides126187266.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxv6.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxv9.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxva.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxvb.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxvd.html
http://blog.sina.com.cn/s/blog_17b5382a20102xthd.html
http://blog.sina.com.cn/s/blog_17b5382a20102xthi.html
http://blog.sina.com.cn/s/blog_17b5382a20102xthl.html
http://blog.sina.com.cn/s/blog_17b5382a20102xthn.html
http://blog.sina.com.cn/s/blog_17b5382a20102xthp.html
http://groups.tianya.cn/post-224172-51ccfde5bf8e4da393a9474a082b7c74-1.shtml
https://club.1688.com/article/63153589.html
https://club.1688.com/article/63153762.html
https://club.1688.com/article/63154090.html
https://tieba.baidu.com/p/5386469825
https://tieba.baidu.com/p/5386471541
https://tieba.baidu.com/p/5386475851
https://tieba.baidu.com/p/5386482872
https://tieba.baidu.com/p/5386484224
https://tieba.baidu.com/p/5386490335
https://tieba.baidu.com/p/5386491309
http://www.chengshiluntan.com/6915808-1.html
http://www.chengshiluntan.com/6915825-1.html
http://www.chengshiluntan.com/6915841-1.html
http://www.chengshiluntan.com/6915852-1.html
http://www.chengshiluntan.com/6915856-1.html
http://www.chengshiluntan.com/6915865-1.html
http://www.chengshiluntan.com/6915871-1.html
http://www.chengshiluntan.com/6915876-1.html
http://www.chengshiluntan.com/6915878-1.html
http://www.chengshiluntan.com/6915882-1.html
https://www.wang1314.com/doc/topic-6606626-1.html
https://www.wang1314.com/doc/topic-6606845-1.html
https://www.wang1314.com/doc/topic-6607270-1.html
https://www.wang1314.com/doc/topic-6607756-1.html
https://www.wang1314.com/doc/topic-6607841-1.html
https://www.wang1314.com/doc/topic-6608214-1.html
https://www.wang1314.com/doc/topic-6608745-1.html
https://www.wang1314.com/doc/topic-6609028-1.html
https://www.wang1314.com/doc/topic-6609303-1.html
https://www.wang1314.com/doc/topic-6609646-1.html
http://www.19lou.com/board-49041508472050881-thread-48631508640211455-1.html
https://buluo.qq.com/p/detail.html?bid=329211&pid=1242779-1508657617
http://blog.csdn.net/wonderfulwyq991/article/details/78310152
http://blog.csdn.net/sprite12io12/article/details/78310178
http://blog.sina.com.cn/s/blog_17b5382a20102xtg9.html
http://blog.sina.com.cn/s/blog_17b5382a20102xtg8.html
http://blog.sina.com.cn/s/blog_17b5382a20102xtga.html
http://blog.sina.com.cn/s/blog_17b5382a20102xtgb.html
http://blog.sina.com.cn/s/blog_17b5382a20102xtgc.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxsx.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxsy.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxsz.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxt0.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxt1.html
https://club.1688.com/threadview/49696723.htm
https://club.1688.com/threadview/49696750.htm
https://club.1688.com/threadview/49696758.htm
https://club.1688.com/threadview/49696768.htm
http://baijiahao.baidu.com/builder/preview/s?id=1581948825320626187
http://baijiahao.baidu.com/builder/preview/s?id=1581949373717418375
http://baijiahao.baidu.com/builder/preview/s?id=1581949504752257022
http://baijiahao.baidu.com/builder/preview/s?id=1581949628525014624
http://baijiahao.baidu.com/builder/preview/s?id=1581949794692411463
http://baijiahao.baidu.com/builder/preview/s?id=1581950036340781106
https://tieba.baidu.com/p/5385005459
https://tieba.baidu.com/p/5385095696
https://www.douban.com/note/641935862/
https://www.19lou.com/board-56081508570206074-thread-56241508570579468-1.html
https://www.19lou.com/board-56081508570206074-thread-56351508571299964-1.html
https://www.19lou.com/wap/board-56081508570206074-thread-48391508572110589-1.html
https://www.19lou.com/board-56091508570886242-thread-56571508586179505-1.html
https://www.19lou.com/board-56091508570886242-thread-53921508590662025-1.html
https://www.19lou.com/wap/board-48121508590547628-thread-73551508590711589-1.html
http://www.19lou.com/board-48061508479844091-thread-56961508555784191-1.html
http://www.19lou.com/board-48061508479844091-thread-56451508556735798-1.html
http://www.19lou.com/board-48061508479844091-thread-56271508558579911-1.html
http://www.19lou.com/board-48061508479844091-thread-56561508561871011-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53171508556828094-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53961508564806973-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53181508566578551-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53401508568058642-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53121508571881462-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53581508573216301-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53601508573369685-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53621508573529197-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53671508573749530-1.html
http://taizhou.19lou.com/board-49081508556617184-thread-53731508573970612-1.html
https://www.douban.com/note/641934310/
https://www.douban.com/note/641934119/
https://www.douban.com/note/641934401/
http://www.19lou.com/board-73061508556280516-thread-49341508573298850-1.html
http://www.19lou.com/board-73061508556280516-thread-49821508572317344-1.html
http://www.19lou.com/board-73061508556280516-thread-49531508571648305-1.html
http://www.19lou.com/board-73061508556280516-thread-49501508571346263-1.html
http://www.19lou.com/board-73061508556280516-thread-49481508566877867-1.html
http://www.19lou.com/board-73061508556280516-thread-49361508565965149-1.html
http://www.19lou.com/board-73061508556280516-thread-49281508565418274-1.html
http://www.19lou.com/board-73061508556280516-thread-49941508556806027-1.html
http://www.19lou.com/board-73061508556280516-thread-49871508556671497-1.html
http://www.19lou.com/board-73061508556280516-thread-49751508556417484-1.html
https://www.wang1314.com/doc/topic-6578555-1.html
https://www.wang1314.com/doc/topic-6579098-1.html
https://www.wang1314.com/doc/topic-6579547-1.html
https://www.wang1314.com/doc/topic-6579708-1.html
https://www.wang1314.com/doc/topic-6579918-1.html
https://www.wang1314.com/doc/topic-6581520-1.html
https://www.wang1314.com/doc/topic-6581695-1.html
https://www.wang1314.com/doc/topic-6585393-1.html
https://www.wang1314.com/doc/topic-6585468-1.html
https://www.wang1314.com/doc/topic-6585531-1.html
http://dy.163.com/v2/article/detail/D19L662A0523LCR7.html
http://dy.163.com/v2/article/detail/D19MRC0Q0517MR88.html
http://dy.163.com/v2/article/detail/D19N7R8A0523LCR7.html
http://dy.163.com/v2/article/detail/D19NSPJ40523LCR7.html
http://dy.163.com/v2/article/detail/D19O6SQE0517MQQ2.html
http://dy.163.com/v2/article/detail/D19ON61R0517MQQ2.html
http://dy.163.com/v2/article/detail/D19PGPM00517MQQ2.html
http://dy.163.com/v2/article/detail/D19PNBCP0517MQQ2.html
http://dy.163.com/v2/article/detail/D19UD4830517MQQ2.html
http://blog.sina.com.cn/s/blog_17b52c5a90102xnyf.html
http://blog.sina.com.cn/s/blog_17b52c5a90102xnyg.html
http://blog.sina.com.cn/s/blog_17b52c5a90102xnyi.html
http://blog.sina.com.cn/s/blog_17b52c5a90102xnyj.html
http://blog.sina.com.cn/s/blog_17b52c5a90102xnyk.html
http://blog.sina.com.cn/s/blog_17b539da20102xdfe.html
http://blog.sina.com.cn/s/blog_17b539da20102xdff.html
http://blog.sina.com.cn/s/blog_17b539da20102xdfg.html
http://blog.sina.com.cn/s/blog_17b539da20102xdfh.html
http://blog.sina.com.cn/s/blog_17b539da20102xdfn.html
https://buluo.qq.com/p/detail.html?bid=329211&pid=1242779-1508657617
http://www.chengshiluntan.com/6914932-1.html
http://www.chengshiluntan.com/6914984-1.html
http://www.chengshiluntan.com/6915011-1.html
http://www.chengshiluntan.com/6915016-1.html
http://www.chengshiluntan.com/6915023-1.html
http://www.chengshiluntan.com/6915100-1.html
http://www.chengshiluntan.com/6915106-1.html
http://www.chengshiluntan.com/6915118-1.html
http://www.chengshiluntan.com/6915134-1.html
http://www.19lou.com/board-49041508472050881-thread-48701508556947506-1.html
http://www.19lou.com/board-49041508472050881-thread-53791508570448292-1.html
http://www.chengshiluntan.com/6911287-1.html
http://www.chengshiluntan.com/6911538-1.html
http://www.chengshiluntan.com/6911778-1.html
http://www.chengshiluntan.com/6911782-1.html
https://www.wang1314.com/doc/topic-6454177-1.html
https://www.wang1314.com/doc/topic-6454648-1.html
https://www.wang1314.com/doc/topic-6454954-1.html
https://www.wang1314.com/doc/topic-6455395-1.html
https://www.wang1314.com/doc/topic-6458085-1.html
https://www.wang1314.com/doc/topic-6458362-1.html
https://www.wang1314.com/doc/topic-6458636-1.html
https://www.wang1314.com/doc/topic-6458806-1.html
https://www.wang1314.com/doc/topic-6459305-1.html
https://www.wang1314.com/doc/topic-6459504-1.html
http://www.sohu.com/a/198856653_100034855
http://www.sohu.com/a/198861115_100034855
https://www.3566t.com/sell/s10667341.html
https://club.1688.com/threadview/49690686.htm
http://www.chengshiluntan.com/6907965-1.html
https://www.wang1314.com/doc/topic-6395405-1.html
https://www.wang1314.com/doc/topic-6395618-1.html
https://www.wang1314.com/doc/topic-6395832-1.html
https://www.wang1314.com/doc/topic-6396078-1.html
https://www.wang1314.com/doc/topic-6396251-1.html
https://www.wang1314.com/doc/topic-6397065-1.html
https://www.wang1314.com/doc/topic-6397173-1.html
https://www.wang1314.com/doc/topic-6397294-1.html
https://www.wang1314.com/doc/topic-6397416-1.html
http://www.sohu.com/a/198612284_100034855
http://www.sohu.com/a/198616261_100034855
http://www.sohu.com/a/198619084_100034855
https://club.1688.com/threadview/49686645.htm
https://club.1688.com/threadview/49686783.htm
https://club.1688.com/threadview/49686957.htm
http://www.99inf.com/zyfw/ybsw/5344538.html
http://blog.sina.com.cn/s/blog_17b5382a20102xt9a.html
http://blog.sina.com.cn/s/blog_17b5382a20102xt99.html
http://blog.sina.com.cn/s/blog_17b5382a20102xt9d.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxmv.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxmy.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxn0.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxn3.html
http://blog.sina.com.cn/s/blog_17baa4f330102wxn5.html
http://blog.tianya.cn/post-7664061-129236581-1.shtml
http://blog.tianya.cn/post-7664061-129236622-1.shtml
http://blog.tianya.cn/post-7664061-129236631-1.shtml
http://blog.tianya.cn/post-7664061-129236635-1.shtml
http://blog.tianya.cn/post-7664061-129236678-1.shtml

原创粉丝点击