如何通过无密码登录链接获取JWT Token?第三方API集成方案
无密码登录方案可行性及JWT Token获取方案
可行性结论
无密码登录方案完全可行,且能满足你的所有需求:无需B公司额外配置、不暴露用户名/密码字段、基于邮箱的无密码流程适配性强。
具体实现步骤(基于Google Identity Toolkit原生能力)
从B公司使用的接口可以判断,其依赖的是Google Identity Toolkit服务,直接利用该服务的无密码认证接口即可实现,无需依赖Firebase:
1. 触发邮箱验证流程
收集用户邮箱后,向Google Identity Toolkit的标准接口发起POST请求,触发无密码登录邮件发送:
POST https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=AIz..4E Content-Type: application/json { "requestType": "SIGNIN_EMAIL_LINK", "email": "user@example.com" }
该接口是Google Identity Toolkit的原生能力,B公司只要已经在用signInWithPassword接口,就默认开通了此功能,无需额外配置。
2. 捕获验证链接并交换Token
用户点击邮件中的验证链接后,链接会携带oobCode参数。通过App链接/Universal Link在你的App中捕获该参数,然后调用以下接口交换JWT Token:
POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithEmailLink?key=AIz..4E Content-Type: application/json { "email": "user@example.com", "oobCode": "用户链接中携带的oobCode值" }
接口返回结果里的idToken就是你需要的JWT认证Token。
3. 验证Token(可选)
如果需要确保Token有效性,可调用B公司正在使用的查询接口做校验:
POST https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=AI..4E Content-Type: application/json { "idToken": "eyJhbGciOiJSUz...KFQ" }
验证通过后,即可在调用B公司其他API时携带该idToken完成认证。
方案优势
- 零B公司配置成本:所有接口均为Google Identity Toolkit标准接口,B公司无需修改任何代码或配置,完全符合“减少端侧配置工作量”的要求。
- 合规性达标:全程不展示用户名/密码输入字段,仅收集用户邮箱,满足你的合规限制。
- 无额外依赖:无需引入Firebase SDK或第三方服务,直接通过HTTP接口实现,避免依赖风险。
替代方案(可选)
若邮箱流程不符合交互需求,可改用短信验证码无密码登录,流程逻辑一致:
- 收集用户手机号,调用
sendOobCode接口(requestType设为PHONE_SIGNIN) - 用户输入验证码后,调用
verifyPhoneNumber接口获取idToken
该方案同样无需B公司额外配置,合规性一致。
内容的提问来源于stack exchange,提问作者Jim Clermonts
相关产品推荐
相关产品推荐

