authWeb.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. // pages/testQQ/testQQ.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. nvabarData: {
  8. showCapsule: 1,
  9. title: '授权页',
  10. callback: () => {
  11. console.log("返回界面3:");
  12. }
  13. },
  14. isQQ: false,
  15. isXmly: false,
  16. webCount: 0,
  17. // qrcodeUrl: "https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20250328100356565128956.png",
  18. qrcodeUrl: "",
  19. },
  20. _goBack() {
  21. console.log("返回界面5", constant.routePath.index);
  22. this.callback();
  23. },
  24. callback() {
  25. // 重置小程序界面到首页
  26. console.log("返回界面4", constant.routePath.index);
  27. const pages = getCurrentPages();
  28. const prevPage = pages[pages.length - 2];
  29. // 修改授权
  30. prevPage.getAuthStatus();
  31. constant.routeUtil.goBack();
  32. },
  33. /**
  34. * 生命周期函数--监听页面加载
  35. */
  36. onLoad: function (options) {
  37. // https://y.qq.com/m/unionlogin/dist/index.html?appId=2&encryptString=%7B%22response_type%22%3A%22code%22%2C%22state%22%3A%22123456%22%7D&packageName=com.tencent.qqmusic.api.demo&callbackUrl=https%3a%2f%2fwww.example.com&changeLogin=0&needNotifyErr=0
  38. let url = options.url;
  39. // let callbackUrl = `http://testweb.radio1964.com/pages/ximalaya/index`;
  40. // http://testweb.radio1964.com/pages/ximalaya/index?ximalayaAccessToken=a87c56fb4e2c914cfeebca611a7f6998&ximalayaUid=511052575&ximalayaRefreshToken=5fcf78529bc2bc0e440dfdc17e3fbe9a&ximalayaExpiresIn=7200#deviceid=MW-SR2(4GWIFI):AIrSMArT145060808230
  41. // let qqUrl = "https://y.qq.com/iot_auth/?a=2000000454&c=auh-OMPRpkBvrnUa61LjvuKu"
  42. // let qqUrl = `https://y.qq.com/m/unionlogin/dist/index.html?appId=${this.data.QQ_MUSIC_APP_ID}&encryptString=${encryptString}&packageName=${this.data.QQ_DEV_NAME}&changeLogin=1&callbackUrl=${callbackUrl}&needNotifyErr=1&authForce=0&loginType=weixin`;
  43. // https://y.qq.com/m/unionlogin/dist/index.html?appId=120&encryptString=%7B%22response_type%22%3A%22code%22%7D&packageName=猫王妙播&changeLogin=0&callbackUrl=${callbackUrl}&needNotifyErr=0
  44. // let qqUrl = `https://y.qq.com/m/unionlogin/dist/index.html?appId=2&encryptString=%7B%22response_type%22%3A%22code%22%2C%22state%22%3A%22123456%22%7D&packageName=com.tencent.qqmusic.api.demo&callbackUrl=${callbackUrl}&changeLogin=0&needNotifyErr=1`
  45. // https://y.qq.com/m/unionlogin/dist/index.html?appId=120&encryptString=%7B%22response_type%22%3A%22code%22%2C%22state%22%3A%22123456%22%7D&packageName=com.Muzen.MaoKingRadioPlayer&changeLogin=0&callbackUrl=https%3a%2f%2fwww.example.com&needNotifyErr=0
  46. // https://y.qq.com/m/unionlogin/dist/index.html?appId=2&encryptString=%7B%22response_type%22%3A%22code%22%2C%22state%22%3A%22123456%22%7D&packageName=com.tencent.qqmusic.api.demo&callbackUrl=https%3a%2f%2fwww.example.com&changeLogin=0&needNotifyErr=0
  47. // let qqUrl = "https://m.ximalaya.com/login?hide_third_login=null&fromUri=https%3A%2F%2Fapi.ximalaya.com%2Foauth2%2Fv2%2Fauthorize%3Fclient_id%3Db55fe439798052676e61fbf0f0f649b7%26response_type%3Dcode%26redirect_uri%3Dhttps://api.ximalaya.com/elderly-ximalayaos-api/openapi-fmxos/callback/oauth2/get_access_token%26device_id%3DMW-SR2(4GWIFI):AIrSMArT145060808230%26client_os_type%3D3%26state%3D1.0.0_47.107.237.154_c65af766a9744b6098c3aec86187023c_3_http://testweb.radio1964.com/pages/ximalaya/index_deviceid=MW-SR2(4GWIFI):AIrSMArT145060808230_null"
  48. //
  49. // let qqUrl = "https://y.qq.com/m/unionlogin/dist/index.html?appId=xx&encryptString=xx&packageName=xx&callbackUrl=xx&changeLogin=xx&needNotifyErr=xx"
  50. //
  51. // const url = options.param;
  52. // http://testweb.radio1964.com/pages/
  53. // http://192.168.198.116:1024/callback/ximalaya/reportAuthInfo
  54. // https://o3tapi.radio1964.com/callback/ximalaya/reportAuthInfo
  55. url = decodeURIComponent(url);
  56. console.log("打开授权页:", url)
  57. if (url.indexOf("ximalaya") > 0) {
  58. this.data.isXmly = true;
  59. } else {
  60. this.data.isQQ = true;
  61. }
  62. // https://m.ximalaya.com/login?hide_third_login=null&fromUri=https%3A%2F%2Fapi.ximalaya.com%2Foauth2%2Fv2%2Fauthorize%3Fclient_id%3Db55fe439798052676e61fbf0f0f649b7%26response_type%3Dcode%26redirect_uri%3Dhttps://api.ximalaya.com/elderly-ximalayaos-api/openapi-fmxos/callback/oauth2/get_access_token%26device_id%3DMW-2AXD:AIrSMArTd031105fe3c0%26client_os_type%3D3%26state%3D1.0.0_47.107.237.154_c65af766a9744b6098c3aec86187023c_3_http://testweb.radio1964.com/pages/ximalaya/index_deviceid=MW-2AXD:AIrSMArTd031105fe3c0_null
  63. // http://testweb.radio1964.com/pages/ximalaya/index_deviceid=MW-2AXD:AIrSMArTd031105fe3c0_null
  64. // url = url.replace("http://testweb.radio1964.com/", "http://192.168.198.116:1024/");
  65. console.log("打开授权页2:", url)
  66. this.setData({
  67. qrcodeUrl: url
  68. });
  69. },
  70. bindload(e) {
  71. console.log("webview加载完成:", e);
  72. // 当做是加载成功了
  73. this.data.webCount++;
  74. var that = this;
  75. var macCount = this.data.isXmly ? 3 : 1;
  76. if (this.data.webCount > macCount) {
  77. setTimeout(() => {
  78. const pages = getCurrentPages();
  79. if (pages.length < 2) {
  80. return;
  81. }
  82. const prevPage = pages[pages.length - 2];
  83. // 修改授权
  84. prevPage.getAllAuthStatus(that.data.isXmly, that.data.isQQ);
  85. }, 1000);
  86. }
  87. },
  88. handleWebviewMessage(e) {
  89. // e.detail.data 是网页 postMessage 发送的数据数组
  90. console.log('收到 web-view 消息:', e);
  91. var that = this;
  92. const msgData = e.detail.data[0]; // 消息数据
  93. if (msgData.channel === "webChannel") {
  94. console.log(" 收到 webChannel 消息:", msgData.content);
  95. }
  96. var channel = e.detail.message;
  97. switch (channel) {
  98. case "webChannel":
  99. // message=====?name=authXmlyWeb&code=1====webChannel
  100. var msg = message.message;
  101. var params = JSON.parse(msg);
  102. var channelName = params["name"] ?? "";
  103. // var externParams = params["externParams"] ?? {};
  104. if (channelName === "authXmlyWeb") {
  105. var code = params["code"] ?? 0;
  106. // 授权成功
  107. wx.showToast({
  108. title: code === 1 ? '授权成功' : '授权失败,请稍后再试',
  109. icon: code === 1 ? 'success' : 'fail'
  110. });
  111. const pages = getCurrentPages();
  112. const prevPage = pages[pages.length - 2];
  113. // 修改授权
  114. prevPage.setData({
  115. isAuthXmly: code === 1,
  116. });
  117. }
  118. default:
  119. break;
  120. }
  121. // 可以根据需要处理消息
  122. },
  123. })