阿里人脸识别的returnUrl本身并不负责区分不同的用户客户端。它的核心作用更像一个“认证后的导航地址”,而真正用于识别和关联用户身份的工作,是由服务端初始化认证时传入的其他参数来完成的。
returnUrl的作用:单纯的跳转地址
returnUrl是在服务端调用InitFaceVerify接口发起认证时设定的一个参数。它就像一个“跳转目标”,用户在人脸识别结束后,页面会自动跳转回这个地址。
标准H5场景:
returnUrl就是您业务页面的一个URL。认证完成后,阿里云会把用户重定向到这个地址,并在URL上拼接certifyId等参数,您的页面再从URL中解析这些参数,进而查询最终结果。iframe内嵌场景:在这种情况下,
returnUrl需要被固定设置为iframe。此时,认证结果不会触发页面跳转,而是通过浏览器的postMessage机制,将结果数据发送给父页面。
区分用户的正确方式
既然returnUrl不区分用户,那么应该如何正确关联用户和其认证请求呢?关键是利用InitFaceVerify接口中的其他业务参数:
UserId(用户ID):这是最关键的参数,用于关联您业务系统中的用户身份。您在调用InitFaceVerify时,将此值设置为当前登录用户的唯一ID。当认证完成后,您就可以通过此UserId来更新对应用户的认证状态。OuterOrderNo(业务订单号):这是您业务中自定义的唯一标识,通常用于后续的定位排查和业务关联。MetaInfo(环境参数):这是一个通过阿里云Web SDK实时获取的环境信息参数,会随请求动态变化,禁止硬编码,用于辅助风控和环境校验,但本身不直接标识用户。
流程总结
所以,完整的流程是:
服务端调用
InitFaceVerify时,传入代表当前用户的UserId,并设置好认证后的跳转地址returnUrl。用户完成认证后,页面跳转到您指定的
returnUrl。您的业务页面在
returnUrl对应的地址加载完成后,可以通过URL参数拿到certifyId。您的服务端再拿着这个
certifyId和当初的UserId,去调用DescribeFaceVerify接口查询最终的认证结果,并将结果与用户绑定。
总结来说,returnUrl是一个导航工具,而区分用户的关键在于服务端发起的认证请求参数。