authWeb.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. // pages/testQQ/testQQ.js
  2. import md5 from "./md5";
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. nvabarData: {
  9. showCapsule: 1,
  10. title: '授权页',
  11. callback: () => {
  12. console.log("返回界面3:");
  13. }
  14. },
  15. // qrcodeUrl: "https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20250328100356565128956.png",
  16. qrcodeUrl: "",
  17. },
  18. callback() {
  19. // 重置小程序界面到首页
  20. console.log("返回界面4", constant.routePath.index);
  21. constant.routeUtil.goBack();
  22. },
  23. /**
  24. * 生命周期函数--监听页面加载
  25. */
  26. onLoad: function (options) {
  27. // 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
  28. let url = options.url;
  29. // let callbackUrl = `http://testweb.radio1964.com/pages/ximalaya/index`;
  30. // // 将response_type、state等组装成json格式,得到encryptString字段,需要对encryptString做一次urlencode
  31. // var encryptString = encodeURIComponent(
  32. // JSON.stringify({
  33. // response_type: "code",
  34. // state: Date.now().toString,
  35. // callbackUrl: callbackUrl
  36. // })
  37. // );
  38. // // 2000000454
  39. // console.log("解密:", encryptString)
  40. // 从 options 中获取传入的 url 参数
  41. // var baseUrl = getApp().globalData.baseUrl + "/web";
  42. // const qqUrl = options.param;
  43. // http://testweb.radio1964.com/pages/ximalaya/index?ximalayaAccessToken=a87c56fb4e2c914cfeebca611a7f6998&ximalayaUid=511052575&ximalayaRefreshToken=5fcf78529bc2bc0e440dfdc17e3fbe9a&ximalayaExpiresIn=7200#deviceid=MW-SR2(4GWIFI):AIrSMArT145060808230
  44. // let qqUrl = "https://y.qq.com/iot_auth/?a=2000000454&c=auh-OMPRpkBvrnUa61LjvuKu"
  45. // 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`;
  46. // 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
  47. // 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`
  48. // 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
  49. // 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
  50. // 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"
  51. //
  52. // let qqUrl = "https://y.qq.com/m/unionlogin/dist/index.html?appId=xx&encryptString=xx&packageName=xx&callbackUrl=xx&changeLogin=xx&needNotifyErr=xx"
  53. //
  54. // const url = options.param;
  55. // https://o3tapi.radio1964.com/callback/ximalaya/reportAuthInfo
  56. // wx.showModal({
  57. // title: '复制打开浏览器',
  58. // content: '',
  59. // complete: (res) => {
  60. // if (res.cancel) {
  61. // }
  62. // if (res.confirm) {
  63. // wx.setClipboardData({
  64. // data: qqUrl,
  65. // })
  66. // }
  67. // }
  68. // })
  69. url = decodeURIComponent(url);
  70. url = url + "?channel=webChannel"
  71. console.log("打开授权页:", url)
  72. this.setData({
  73. qrcodeUrl: url
  74. });
  75. },
  76. webChannel(e) {
  77. // e.detail.data 是网页 postMessage 发送的数据数组
  78. console.log('收到 web-view 消息:', e);
  79. var that = this;
  80. const msgData = e.detail.data[0]; // 消息数据
  81. if (msgData.channel === "webChannel") {
  82. console.log(" 收到 webChannel 消息:", msgData.content);
  83. }
  84. var channel = e.detail.message;
  85. switch (channel) {
  86. case "webChannel":
  87. // message=====?name=authXmlyWeb&code=1====webChannel
  88. var msg = message.message;
  89. var params = JSON.parse(msg);
  90. var channelName = params["name"] ?? "";
  91. // var externParams = params["externParams"] ?? {};
  92. if (channelName === "authXmlyWeb") {
  93. var code = params["code"] ?? 0;
  94. // 授权成功
  95. wx.showToast({
  96. title: code === 1 ? '授权成功' : '授权失败,请稍后再试',
  97. icon: code === 1 ? 'success' : 'fail'
  98. });
  99. const pages = getCurrentPages();
  100. const prevPage = pages[pages.length - 2];
  101. // 修改授权
  102. prevPage.setData({
  103. isAuthXmly: code === 1,
  104. });
  105. }
  106. default:
  107. break;
  108. }
  109. // 可以根据需要处理消息
  110. },
  111. })