随着百度小程序的风头正劲,越来越多的站长投入到百度小程序的开发中来,但是开发过程中难免会碰到诸多问题无法自己解决,07-15小编发现百度用户:【彩云之南q8】提出了一个关于“联合登录数据可能无法解密或解密后手机号是空的?”的问题,在问题中开发者彩云之南q8对该问题做了如下阐述:
上线联合登陆快两个月了,偶尔能碰到解密出错,更可怕的是解密不出错但没有手机号。
大部分用户解密是没问题的,我自己试了很多次都正常。
个别用户有第一次点联合登陆是无法解密,第二次再点就能正常解密到手机号。
不清楚有没有同样问题的。。。
贴上前端和服务端代码。openid都是正常拿到了。
swan.getLoginCode({ success: ({code}) => { this.methods.handleBdLogin({ encryptedData, iv, code, }).then(() => { // 登录成功 }) }) })
def hhhhh(): bd = BaiduClient() res = bd.code2Session(code) openid = res['openid'] session_key = res['session_key'] logger.info('==decrypt: {} {} {}'.format(encrypted_data, iv, session_key)) data = bd.decrypt(encrypted_data, iv, session_key) if not data: return responseError("无法解密") phone = data.get('mobile', '') if not phone: return responseError("无法解密手机号") class BaiduClient(object): def __init__(self): self.app_key = settings.BD_MP_APPKEY self.app_secret = settings.BD_MP_SECRET def code2Session(self, code): api_url = 'https://spapi.baidu.com/oauth/jscode2sessionkey' params = { 'code': code, 'client_id': self.app_key, 'sk': self.app_secret } req = requests.post(api_url, params) if req.status_code == 200 and req.content: return req.json() else: return req def decrypt(self, encrypted_data, iv, session_key): session_key = base64.b64decode(session_key) iv = base64.b64decode(iv) encrypted_data = base64.b64decode(encrypted_data) cipher = AES.new(session_key, AES.MODE_CBC, iv) logger.info('==encrypted: {}=='.format(encrypted_data)) decrypted = cipher.decrypt(encrypted_data) data = self.decode(decrypted) if not data: return '' return json.loads(data.decode() if isinstance(data, bytes) else data) def decode(self, s): s = s[:-ord(s[len(s) - 1:])] if len(s) < 16: return '' # 非法,无法解密 s = s[16:] xmllen = struct.unpack('!L', s[:4]) xmllen = xmllen[0] xml_content = s[4:xmllen + 4] return xml_content
注:以上是百度小程序开发者:”彩云之南q8″对于本问题的一些阐述,这里做一个引用,我们将实时关注百度小程序助手对该问题提出的解决方案。
【07-15】百度官方对用户彩云之南q8提出的联合登录数据可能无法解密或解密后手机号是空的?给予如下回复
开发者您好,这个问题是稳定复现的吗?双端都可以复现?麻烦提供下小程序二维码
百度智能微信小程序将提供超过60个AI接口和超过20个NA化组件给开发人员,包括语音、文字、图像和人脸识别等。进入智能化时期,百度不是空喊口号,已经在大步实施。
如果您也在使用百度小程序,请关注我们,如果您有关于百度小程序的使用问题请联系我们,或者去百度小程序平台找官方人员给予解决,相信百度在小程序上的发力会是一个里程碑!