收藏
回答

云开发

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wxebbfb0c332a64879 yunjuhe-fuwuduan-9frxxbf0ca65a39 2.0.0
 

// 公众号基本信息:请修改下列字段使用本示例 请换成自己的
      const WX_RESOURCE_APPID = 'wxebbfb0c332a64879' /*         资源方 AppID */
      const WX_RESOURCE_ENVID = 'y-xxxx' /*                     资源方云开发环境 ID */
      const WX_OFFICIAL_ACCOUNT_APPID = 'wxdeb11c5649d3bff6'/*  公众号 AppID */
      const WX_AUTH_TYPE = 'snsapi_base' /*                     选择需要的授权方式,snsapi_base 或 snsapi_userinfo */
      const WX_REDIRECT_URI = 'https://shouyin.yeepay.com/nc-cashier-wap/sccanpay/auth2Callback/wechatLogin' /*         回调 URL */
      //
      // 示例配置
      const isPersistLoginInfo = false // 是否需要保留登录态信息到 window 中,只有 snsapi_userinfo 方式需要


      if (window.wx) {
        window.cloud = wx.cloud
      }


      var urlSearch = new URLSearchParams(location.search)
      var accessToken = urlSearch.get('access_token')
      var refreshToken = urlSearch.get('refresh_token')


      /**
       * 检查/发起登录
       * 1. 函数会检查当前是否已登录(checkLogin)
       * 2. 如果未登录,会 10s 后自动发起登录(startLogin)
       * 3. 如果已登录,会初始化实例,使用指定的微信云开发资源
       */
       window.doLogin = async () => {
        try {
          const checkLoginOptions = {
            provider: 'OfficialAccount',
            appid: WX_OFFICIAL_ACCOUNT_APPID,
          }


          if (accessToken) {
            checkLoginOptions.accessToken = accessToken
          }
          if (refreshToken) {
            checkLoginOptions.refreshToken = refreshToken
          }


          console.log(`checkLogin options: `, checkLoginOptions)
          const result = await cloud.checkLogin(checkLoginOptions)
          console.log(`checkLogin result: `, result)
          if (isPersistLoginInfo) {
            window.checkLoginRes = result
          }
          if (result.errCode === 0 && result.loggedIn) {
            console.log(`checkLogin success`)


            const instance = window.instance = new cloud.Cloud({
              appid: WX_OFFICIAL_ACCOUNT_APPID,
              resourceAppid: WX_RESOURCE_APPID,
              resourceEnv: WX_RESOURCE_ENVID,
            })
            const initResult = await instance.init()


            console.log(`instance inited`, initResult)
            console.log(`can use cloud instance to access resource now !`)


            return instance
          } else {
            console.log(`checkLogin with sdk errCode ${result.errCode} errMsg ${result.errMsg}, will start oauth in 10s`)


            setTimeout(() => {
              try {
                cloud.startLogin({
                  provider: 'OfficialAccount',
                  appid: WX_OFFICIAL_ACCOUNT_APPID,
                  scope: WX_AUTH_TYPE,
                  redirectUri: WX_REDIRECT_URI+'?redirectUrl='+window.location.href,
                })
              } catch (e) {
                console.error(`startLogin fail: ${e}`)
                console.warn(`will start OfficialAccount OAuth login in 10s.`)
              }
            }, 3000)
          }
        } catch (e) {
          console.error(e)
        }
      }



      async function getJSSDKSignature(url = window.location.href) {
        const instance = window.instance
        let res = {}
        try {
          // 在完成云开发登录之后,可以使用云开发 Web SDK 提供的 getJSSDKSignature 方法完成获取网页 wx.config 所需签名
          res = await instance.getJSSDKSignature({
            url: url //  '要签名的网页 URL'
          })
        } catch (error) {
          console.error(error);
        }


        console.log(res, 'res------<');
        return res
      }

调用 checkLogin 获取登录, 提示 redirect_uri 参数错误

最后一次编辑于  2025-09-01
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2025-09-02

    网页授权域名只配置域名,不用加路径

    2025-09-02
    有用
    回复
登录 后发表内容