收藏
回答

没有使用getPhoneNumber能力却扣减了次数

问题类型 API/组件名称 微信版本 基础库版本
Bug 手机号快速验证组件 2.01.2510260 3.13.2

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

已知:小程序使用手机号快速验证组件登录,目前处于体验版阶段,线上版本未接入该能力

使用方式:未登录的时候渲染该组件,用户点击授权。本按钮放在单独的登录授权页中,用户点击后跳转该页面点击授权弹出手机号弹窗。

import React, { useState } from 'react'
import { Button } from '@tarojs/components'
import Taro from '@tarojs/taro'
import { useLogin } from '../../../hooks/useLogin'
import './index.less'


interface LoginBtnProps {
  /** 自定义样式类名 */
  className?: string
  /** 自定义样式 */
  style?: React.CSSProperties
  /** 按钮内容 */
  children?: React.ReactNode
  /** 登录成功回调 */
  onSuccess?: (userInfo: any) => void
  /** 登录失败回调 */
  onFail?: (error: any) => void
  /** 加载中文案 */
  loadingText?: string
}


/**
 * 统一的手机号授权登录按钮组件
 * 封装了 openType="getPhoneNumber" 及相关状态管理
 * 触发回调后立即禁用按钮,防止重复点击
 */
const LoginBtn: React.FC = ({
  className = '',
  style,
  children,
  onSuccess,
  onFail,
  loadingText = '登录中...'
}) => {
  const { loading: hookLoading, handleMobileLogin } = useLogin()
  // 本地状态用于立即响应点击,防止重复触发
  const [isAuthTriggered, setIsAuthTriggered] = useState(false)


  const handleGetPhoneNumber = async (e: any) => {
    track('handleGetPhoneNumber')
    // 1. 防止重复点击:如果正在 loading 或已经触发了授权逻辑
    if (hookLoading || isAuthTriggered) {
      console.log('[LoginBtn] 忽略重复点击', { hookLoading, isAuthTriggered })
      return
    }

    setIsAuthTriggered(true)


    try {
      // 3. 调用授权登录逻辑
      const userInfo = await handleMobileLogin(e)
      
      // 4. 成功回调
      if (onSuccess) {
        onSuccess(userInfo)
      }
      
      // 注意:成功后通常会跳转或刷新,不需要恢复 isAuthTriggered 状态
      // 如果业务逻辑不跳转,外部组件可能需要控制状态,但 LoginBtn 主要用于登录,登录成功后状态通常会变
    } catch (error) {
      console.error('[LoginBtn] 登录失败:', error)
      
      // 5. 失败回调
      if (onFail) {
        onFail(error)
      }
      
      // 6. 失败后恢复状态,允许重试
      setIsAuthTriggered(false)
    }
  }


  // 合并 loading 状态
  const isLoading = hookLoading || isAuthTriggered


  return (
    
      {isLoading ? loadingText : children}
    
  )
}


export default LoginBtn



问题:用量曲线和实际操作严重不符,凌晨无人使用的时候也在扣减次数(暂未开放到线上);3月1日,自采集打点0个用户执行到了getPhoneNumber回调,次数依然在扣减

最后一次编辑于  星期一 11:07
回答关注问题邀请回答
收藏

3 个回答

  • 第三方平台小助手
    第三方平台小助手
    星期一 14:40

    你好,若对调用量有疑问,可参考《手机号计费误差问题排查指南》进行排查。提供对应小程序appid、昨日完整一天的手机号授权上报数据等

    星期一 14:40
    有用
    回复 4
    • LJS
      LJS
      星期一 16:30
      你好,appid=wxea7e6de3560c6e7e,昨日3月1号休息日我们内部打点统计是0人执行到了getphonenumber,所以昨日是没有上报数据的,功能也并未上线,只有体验版在内部使用
      星期一 16:30
      回复
    • 第三方平台小助手
      第三方平台小助手
      星期一 17:00回复LJS
      提供昨日显示的扣费截图
      星期一 17:00
      回复
    • LJS
      LJS
      星期一 17:28回复第三方平台小助手
      你好,
      星期一 17:28
      回复
    • 第三方平台小助手
      第三方平台小助手
      星期一 17:58回复LJS
      核实小程序wxea7e6de3560c6e7e已经上线,并且在线上版可以授权手机号成功,请自查下
      星期一 17:58
      1
      回复
  • 从君华
    从君华
    02-28

    说不清的,微信也不提供对账单,扣多少钱完全是他们说了算。

    02-28
    有用
    回复 1
    • LJS
      LJS
      02-28
      你也碰到这个问题的吗
      02-28
      回复
  • 智能回答 智能回答 本次回答由AI生成
    02-28
    有用
    回复 1
    • LJS
      LJS
      02-28
      1. 不存在体验版之外的场景,因为本次体验版接入前的一个月都没有次数消耗,当时还是有试用次数的 2. 完整响应参数格式正常 3. 是否存在用户未手动操作却扣减次数的情况
      02-28
      回复
登录 后发表内容