sso.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. // 跨小程序单点登录(SSO):从 cfc 跳转到训练营(train)小程序。
  2. // 复用方式:页面按钮 @click 调 jumpToTrain() 即可;后端已用一次性票据免二次微信授权。
  3. import { createSsoTicket } from './api.js'
  4. // 训练营小程序 AppID
  5. const TRAIN_APPID = 'wxcf0ed181fc3bce50'
  6. // 训练营落地页(App.onLaunch 会读取 query.ssoTicket 换票登录)
  7. const TRAIN_LANDING_PATH = 'pages/index/index'
  8. /** 已登录用户跳到训练营:签发一次性票据 → navigateToMiniProgram */
  9. export function jumpToTrain() {
  10. if (!uni.getStorageSync('token')) {
  11. uni.showToast({ title: '请先登录', icon: 'none' })
  12. return
  13. }
  14. uni.showLoading({ title: '跳转中...' })
  15. createSsoTicket('train').then(function(res) {
  16. uni.hideLoading()
  17. var ticket = res && res.data && res.data.ticket
  18. if (!ticket) {
  19. uni.showToast({ title: '签发失败,请稍后重试', icon: 'none' })
  20. return
  21. }
  22. uni.navigateToMiniProgram({
  23. appId: TRAIN_APPID,
  24. path: TRAIN_LANDING_PATH + '?ssoTicket=' + encodeURIComponent(ticket),
  25. fail: function() {
  26. uni.showToast({ title: '跳转失败,请确认已关联训练营小程序', icon: 'none' })
  27. }
  28. })
  29. }).catch(function() {
  30. uni.hideLoading()
  31. })
  32. }