收藏
回答

鸿蒙App接入微信SDK唤起登录前必须退后台一次,否则onResp回调不执行?

App启动直接唤起微信登录时onResp回调不会调用,二次唤起或者唤起微信登录前先退一次后台onResp才会正常执行

新建了一个空项目,使用了主项目的bundleid与证书,运行后是一样的,必须二次才会执行回调,排除主项目其他干扰

微信SDK版本:"@tencent/wechat_open_sdk": "1.0.11",

回调:

class WXApiEventHandlerImpl implements wxopensdk.WXApiEventHandler {
  onResp(resp: wxopensdk.BaseResp): void {
    console.info("onResp:%s", JSON.stringify(resp))
    this.onRespCallbacks.forEach((on) => {
      on(resp)
    })
  }
}
export const WXEventHandler = new WXApiEventHandlerImpl


首次唤起登录:

再次唤起登录

而且有个疑问,onResp在onNewWant之前执行,那么onNewWant里的

WXApi.handleWant(want, WXEventHandler)


有没有意义呢


微信登录代码

唤起登录页面

  aboutToAppear(): void {
    if (WXApi.isWXAppInstalled()) {
      this.wxResp = (resp) => {
        let t = resp.type
        if (t === 1) {
          // 登录
          let r = resp as wxopensdk.SendAuthResp
          console.log('SendAuthResp ' + r.code)
        }
      }
      WXEventHandler.registerOnWXRespCallback(this.wxResp)
    }
  }

    // 微信登录
  private async wxLoginAction() {
    let req = new wxopensdk.SendAuthReq
    req.nonAutomatic = true
    req.scope = 'snsapi_userinfo' // 固定写死,不允许修改
    req.state = 'open_wxlogin'
    let finished = await WXApi.sendReq(getContext(this) as common.UIAbilityContext, req)
  }





最后一次编辑于  04-28
回答关注问题邀请回答
收藏

5 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    06-03

    你好,若还有问题麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点,bundleid、identifier、appid和opensdk的调用时间点(可以社区私信提供)

    06-03
    有用
    回复 4
    • K
      K
      06-24
      我已经上报了日志,请问这个问题解决了吗?
      06-24
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      06-24回复K
      若还有问题麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点,bundleid、identifier、appid和opensdk的调用时间点(可以社区私信提供)
      06-24
      回复
    • K
      K
      06-26
      解决了  开发者需要先配置和微信约定的action wxentity.action.open
      06-26
      回复
    • 尼卡
      尼卡
      12-01
      我这边还是存在这个问题。第一次安装,wechatSDK没有授权回调,重启应用后才有
      12-01
      回复
  • Spidey
    Spidey
    07-17

    我也遇到了,最开始只在EntryAbility的onNewWant里面处理,后面发现在onCreate里面也得加上,项目初始化绑定上WXEventHandler就有了😂

    07-17
    有用 1
    回复
  • 峡迩
    峡迩
    12-11

    将初始化放在onCreate 之前才有用,但是能过审吗?

    wxopensdk.WXAPIFactory.createWXAPI(appId);
    



    12-11
    有用
    回复
  • K
    K
    06-16

    我也遇到这个问题 首次拉起微信验证onResp未响应 必须后续拉起微信登录才能正常响应 目前版本是1.0.14,请问如何解决呢

    06-16
    有用
    回复 1
    • 您秃头了哦
      您秃头了哦
      08-12
      同样遇到一样的问题 你这边解决了吗
      08-12
      回复
  • Sisyphus
    Sisyphus
    06-12

    这个有解决方案吗,目前我看1.0.14版本还是有这个问题

    06-12
    有用
    回复 1
    • K
      K
      06-26
      开发者需要先配置和微信约定的action wxentity.action.open 试试添加一下呢
      06-26
      回复
登录 后发表内容