OutsideLogin.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. Namespace.register("U.MD.U.OT"); //用户登录的命名空间
  2. //推送的广告词
  3. U.MD.U.OT.advertisingLanguage = "最新科技:云操作系统,您也来加入吧!点击进入哦!";
  4. //#region 加载外联登录
  5. /**
  6. * 异步加载qq登录的js
  7. *
  8. * @param {array} 加载按钮样式(参考qq登录api)
  9. */
  10. U.MD.U.OT.qqLoadJs = function (bottonstyle) {
  11. //加载第三方登录的js
  12. U.UF.DL.asynLoadJs({
  13. "data-appid": "100584402",
  14. "charset": "utf-8",
  15. "src": "http://qzonestyle.gtimg.cn/qzone/openapi/qc-1.0.1.js"
  16. },
  17. function () {
  18. U.MD.U.OT.asynQqLoadJs(bottonstyle); //腾讯登录加载
  19. });
  20. }
  21. /**
  22. * qq登录加载异步js成功处理
  23. *
  24. * @param {array} 加载按钮样式(参考qq登录api)
  25. */
  26. U.MD.U.OT.asynQqLoadJs = function (bottonstyle) {
  27. //调用加载qq登录按钮加载函数
  28. QC.Login(bottonstyle, function (qquserinfo) {
  29. U.MD.U.OT.qqLoginCallBack(qquserinfo);
  30. });
  31. //由于qq登录按钮加载后会出现a标签,所以点击会出现错位于是会这里把a标签的href修改成"javascript:void(0)"
  32. $("a", $("#" + bottonstyle["btnId"])[0]).addAttrArray({ "href": "javascript:void(0)" });
  33. }
  34. /**
  35. * 异步加载微博登录的js
  36. *
  37. * @param {array} 加载按钮样式(参考微博登录api)
  38. */
  39. U.MD.U.OT.weiboLoadJs = function (bottonstyle) {
  40. //异步加载使用,微博登录加载
  41. U.UF.DL.asynLoadJs({
  42. "charset": "utf-8",
  43. "src": "http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=1242324937", //&i=" + Guid.newGuid()
  44. "charset": "utf-8",
  45. "type": "text/javascript"
  46. },
  47. function () {
  48. //微博按钮加载处理
  49. WB2.anyWhere(function (wb) {
  50. wb.widget.connectButton(bottonstyle); //加载按钮
  51. $("a", $("#" + bottonstyle["id"])[0]).addAttrArray({ "href": "javascript:void(0)" });
  52. });
  53. });
  54. }
  55. /**
  56. * 异步加载微信登录js
  57. *
  58. * @param {array} 加载按钮样式(参考微信登录api)
  59. */
  60. U.MD.U.OT.weixinLoadJs = function (bottonstyle) {
  61. //异步加载微信登录
  62. U.UF.DL.asynLoadJs({
  63. "charset": "utf-8",
  64. "src": "http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js",
  65. "charset": "utf-8",
  66. "type": "text/javascript"
  67. },
  68. function () {
  69. //初始化微信
  70. new WxLogin({
  71. id: bottonstyle.ID || "",
  72. appid: "wxae62986df7490c49",
  73. scope: "snsapi_login",
  74. redirect_uri: "",
  75. state: bottonstyle.state || Guid.newGuid(),
  76. style: bottonstyle.style || "",
  77. href: bottonstyle.href || ""
  78. });
  79. });
  80. }
  81. /**
  82. * 注销第三方登录
  83. *
  84. */
  85. U.MD.U.OT.logout = function () {
  86. try {
  87. //退出微博登陆
  88. if (WB2 && WB2.checkLogin()) {
  89. WB2.logout();
  90. }
  91. } catch (e) { }
  92. try {
  93. //退出qq登陆
  94. if (QC && QC.Login.check()) {
  95. QC.Login.signOut();
  96. }
  97. } catch (e) { }
  98. }
  99. //#endregion
  100. //#region 腾讯登录
  101. /**
  102. * 腾讯登录回调
  103. *
  104. */
  105. U.MD.U.OT.qqLoginCallBack = function () {
  106. //如果用户已经通过qq登录的处理
  107. if (QC.Login.check()) {
  108. //获取用户登录openid
  109. QC.Login.getMe(function (openid, token) {
  110. var _qquserinfo = {}; //最终得到的qq信息
  111. _qquserinfo.accessToken = token; //token
  112. _qquserinfo.openID = openid; //openid
  113. //获取用户信息
  114. QC.api("get_user_info", {}).success(function (userinfo) {
  115. userinfo = userinfo.data; //qq用户信息回调
  116. //获取用户基本信息
  117. _qquserinfo.UserNickName = userinfo.nickname; //用户基本信息
  118. _qquserinfo.gender = userinfo == "男" ? 1 : 0; //用户的性别
  119. _qquserinfo.province = userinfo.province;
  120. _qquserinfo.city = userinfo.city;
  121. _qquserinfo.Birthday = U.UF.D.toTimeStamp(_qquserinfo.year + "/01/01");
  122. //腾讯微博基本信息
  123. QC.api("get_info", {}).success(function (weibouserinfo) {
  124. weibouserinfo = weibouserinfo.data.data;
  125. var _location = weibouserinfo.location.split(' ');
  126. //发送一条雨云科技的消息
  127. QC.api("add_pic_t", {
  128. "content": U.MD.U.OT.advertisingLanguage,
  129. "pic": "/img/qqew.jpg"
  130. });
  131. //关注我们的腾讯微博
  132. QC.api("add_idol", {
  133. "name": "雨云科技"
  134. });
  135. //登录用户信息
  136. _qquserinfo.nickname = weibouserinfo.nick;
  137. _qquserinfo.gender = weibouserinfo.sex;
  138. _qquserinfo.openID = openidp;
  139. _qquserinfo.accessToken = token;
  140. _qquserinfo.province = _location[1];
  141. _qquserinfo.city = _location[2];
  142. _qquserinfo.description = weibouserinfo.introduction;
  143. _qquserinfo.UserEmail = weibouserinfo.email;
  144. _qquserinfo.Birthday = U.UF.D.toTimeStamp(weibouserinfo.birth_year + "-" + weibouserinfo.birth_month + "-" + weibouserinfo.birth_day, "-");
  145. //获取信息成功后在1473中注册登录
  146. U.MD.U.OT.thirdPartyLogin(_qquserinfo);
  147. }).error(function () {
  148. //如果微博没有信息,则直接用注册qq用户的信息
  149. U.MD.U.OT.thirdPartyLogin(_qquserinfo);
  150. });
  151. }).error(function () { U.alert("获取用户信息失败"); })
  152. });
  153. }
  154. }
  155. //#endregion
  156. //#region 微博登录
  157. /**
  158. * 微博登录成功或者失败后的回调函数
  159. *
  160. */
  161. U.MD.U.OT.weiboLoginCallBack = function (userinfo) {
  162. U.MD.U.OT.thirdPartyLogin(userinfo); //1473登录
  163. WB2.anyWhere(function (WB2) { //调用
  164. WB2.parseCMD("/statuses/update.json",
  165. //利用微博登录授权后设置用户发送一条微博消息
  166. function (message) { },
  167. {
  168. "status": U.MD.U.OT.advertisingLanguage
  169. });
  170. //让用户关注云端
  171. WB2.parseCMD("/friendships/create.json",
  172. function (message) { },
  173. { "screen_name": "1473云端" });
  174. });
  175. }
  176. /**
  177. * 微博关注按钮,传入参数为需要关注的id。
  178. *
  179. */
  180. U.MD.U.OT.addWeiboFollowBottom = function (id) {
  181. //初始化得到微博功能
  182. WB2.anyWhere(function (weibo) {
  183. //设置按钮
  184. weibo.widget.followButton({
  185. "nick_name": "1473云端", //设置腾讯微博关注按钮
  186. "id": id,
  187. "show_head": false,
  188. "show_name": false,
  189. "show_cancel": false
  190. });
  191. });
  192. }
  193. //#endregion
  194. //#region 微信登录处理
  195. //2ed68d9671db0ee8ba114f69567502b6
  196. /**
  197. * 判断外链用户是否存在
  198. *
  199. * @param {array} 登录值参数
  200. * @param {array} 回调函数
  201. */
  202. U.MD.U.OT.weixin = function () {
  203. //防止二维码缓存。
  204. U.MD.U.OT.wxData = { "id": Guid.newGuid() };
  205. window.open("https://open.weixin.qq.com/connect/qrconnect?appid=wxae62986df7490c49&redirect_uri=" + window.encodeURI("/WxDomain.htm") + "&response_type=code&scope=snsapi_login&state=" + U.MD.U.OT.wxData.id);
  206. }
  207. /**
  208. * 微信注册异步回调区域
  209. *
  210. */
  211. U.MD.U.OT.asynWeixin = function (str) {
  212. var _co = U.UF.C.queryString("code", str), //获取code值
  213. _state = U.UF.C.queryString("state", str); //回调状态
  214. if (_state == U.MD.U.OT.wxData.id && _state != null) { //判断状态吗是否匹配
  215. U.A.Request("http://zhifu.1473.cn/weixin/login.php?code=" + _co, [], function (r) {
  216. if (r.value.openid) {
  217. U.MD.U.OT.thirdPartyLogin(r.value); //登录
  218. }
  219. else {
  220. U.alert("微信扫描登录失败");
  221. }
  222. });
  223. }
  224. }
  225. //#endregion
  226. //#region 外链登录成功使用
  227. /**
  228. * 判断外链用户是否存在
  229. *
  230. * @param {array} 登录值参数
  231. */
  232. U.MD.U.OT.thirdPartyLogin = function (userinfo) {
  233. var _openid = userinfo.openID || userinfo.id || userinfo.openid; //userinfo.openID代表QQ的openid userinfo.id代表微博的openid userinfo.openid代表微信的openid
  234. U.A.Request(US.USER, ["ThirdPartyLogin", _openid],
  235. U.MD.U.OT.asynThirdPartyLogin, [null, userinfo]); //通过微博或者qq的openid 获取是否在1473上注册的用户
  236. }
  237. /**
  238. * 微博或者qq云端登录异步
  239. *
  240. * @param {array} 登录值参数
  241. * @param {array} 回调函数
  242. */
  243. U.MD.U.OT.asynThirdPartyLogin = function (r) {
  244. //用户存在直接登录
  245. if (typeof r.value == "object") {
  246. U.MD.U.L.asynLoginAjax(r); //直接登录
  247. }
  248. //用户不存在填写资料
  249. else {
  250. U.MD.U.R.isregister[0] = U.MD.U.R.isregister[1] = false; //设置信息不成功
  251. window.parent.U.MD.U.OT.perfectUserInfo(r.context[1], r.value); //填写登录信息
  252. }
  253. }
  254. //#endregion
  255. //#region 外链登录
  256. //U.MD.U.OT.perfectUserInfoInit = function (userinfo, username) {
  257. // var i,
  258. // _password = U.UF.Math.getRandom(1000000), //生成一个数据密码
  259. // _el = $("#U_MD_U_OT_B"), //获取第三方登录填写资料的框
  260. // _childs = _el.find("div"); //获取子元素
  261. // U.MD.U.R.isregister[0] = U.MD.U.R.isregister[1] = false; //设置注册的信息默认为false
  262. // //用户名的处理
  263. // while (username.toString().length < 6) {
  264. // username = "0" + username;
  265. // }
  266. // _childs[4].innerHTML = "账号:<span>" + username + "</span>"; //用户的账号
  267. // _childs[5].innerHTML = "密码:" + _password; //用户的密码
  268. // //取消按钮的设置
  269. // _childs[_childs.length - 1].onclick = function () {
  270. // U.MD.U.OT.userRegister(userinfo, false, _form, username, _password);
  271. // }
  272. // //确定按钮的处理
  273. // _childs[_childs.length - 1].onclick = function () {
  274. // U.MD.U.OT.userRegister(userinfo, true, _form);
  275. // }
  276. //}
  277. /**
  278. * 把用户填写的账号密码写入数据库
  279. *
  280. * @param {array} 登录值参数
  281. * @param {array} 回调函数
  282. */
  283. U.MD.U.OT.userRegister = function (userinfo, b, form, username, password) {
  284. var _openid, //第三方平台的openid
  285. _el = $("#U_MD_U_OT_B"),
  286. _inputs = _el.find("input");
  287. //点击确定密码自己设置
  288. if (b) {
  289. username = _inputs[0].value; //用户名
  290. password = _inputs[1].value; //密码
  291. }
  292. //判断用户注册的信息是否通过
  293. if (U.MD.U.R.isregister[0] && U.MD.U.R.isregister[1]) {
  294. _openid = userinfo.openID || userinfo.id || userinfo.openid; //获取用户的唯一识别id
  295. //调用ajax进行注册处理
  296. U.A.Request(US.USER, ["UserRegister", username, password, "", US.city.userAllLocation || "", _openid],
  297. U.MD.U.OT.asynUserRegister, [_el[0], userinfo, form]); //注册中
  298. }
  299. else {
  300. U.alert("注册的信息有问题,请修改。");
  301. }
  302. }
  303. /**
  304. * 外链登录成功 同时修改个人信息
  305. *
  306. * @param {object} 注册用户的信息
  307. */
  308. U.MD.U.OT.asynUserRegister = function (r) {
  309. var _userinfo, //登录用户信息
  310. _context = r.context,
  311. _outeruserinfo = _context[1],
  312. _form = _context[2];
  313. //QQ,微博方式注册进来
  314. if (U.MD.U.R.asynRegister(r, true)) {
  315. _userinfo = US.userInfo;
  316. //用户在第三方的资料设置在1473总
  317. _userinfo.Country = "中国";
  318. _userinfo.Province = _USE.province || "";
  319. _userinfo.UserEmail = _USE.UserEmail || "";
  320. _userinfo.Birthday = U.UF.D.getYearMonthDay(_USE.Birthday, "String");
  321. _userinfo.City = _USE.city || "";
  322. _userinfo.UserAddress = _USE.location || "";
  323. _userinfo.UserNickName = _USE.screen_name || _USE.nickname || "";
  324. _userinfo.UserRemarks = _USE.description || "";
  325. _userinfo.UserIndividualitysignature = _USE.description || "";
  326. _userinfo.UserThumbnailImageHead = _USE.avatar_large || _USE.avatar_hd || _USE.figureurl_qq_2 || _USE.figureurl_qq_1 || "";
  327. _userinfo.UserSex = (_USE.gender == "m" | _USE.gender == 1) ? 1 : 0;
  328. //基本资料同步到服务器中
  329. U.A.Request(US.USER, ["UpdateUserBasicInfo", _userinfo.UserId, "", _userinfo.UserNickName, "", "", _userinfo.UserIndividualitysignature, _userinfo.UserEmail, "", _userinfo.UserSex, _userinfo.Country, _userinfo.Province, _userinfo.City, _userinfo.Birthday], function () { }); //修改用户登录资料
  330. //用户头像信息更新到服务器中
  331. U.A.Request(US.USER, ["UpdateUserHeadPortrait", US.userInfo.userid, _userinfo.UserThumbnailImageHead, _userinfo.UserThumbnailImageHead], function () { });
  332. //关闭窗体
  333. _form.close();
  334. }
  335. else {
  336. //注册成功提醒
  337. U.alert("注册失败。请重新尝试");
  338. }
  339. }
  340. //#endregion