用户在Facebook端移除应用后重新在我方应用关联登录会发生什么?
Facebook登录异常场景问题解答
核心问题1:用户移除应用后重新登录的实际表现
首先澄清认知误区:你提到的FB为每个用户生成的专属应用ID是应用域用户ID(ASID),用户在Facebook设置中移除应用后,仅会失效你当前持有的该用户的access_token、以及FB侧保存的用户授权记录,并不会删除ASID和用户的映射关系。
当用户重新发起Facebook登录请求时,只要用户在FB的授权弹窗中再次同意授权,你可以再次获取到和之前完全相同的ASID,以及新的有效access_token,直接就能关联到用户之前的账号,这就是你观察到Ometv支持移除后正常登录的原因。
Facebook官方文档也明确要求该场景的适配逻辑:
用户通过Facebook应用设置移除你的应用后重新访问你的应用。你的应用应当检测到该状态,提示用户重新登录。测试流程:进入你的应用,点击“使用Facebook登录”按钮,点击确认接受读权限(如有写权限要求也需再次点击确认),前往Facebook的应用设置移除你的应用,重复前两步操作,验证Facebook登录功能可正常使用。
核心问题2:用户是否可以绕过默认登录行为
无法绕过Facebook的强制授权流程。用户移除应用后,FB侧已经清除了所有该用户对你的应用的授权记录,不管你本地缓存了任何旧凭证,调用FB接口时都会被拦截,必须引导用户重新完成授权操作才能拿到有效凭证。
部分场景下用户感知不到额外步骤,是因为FB会记住用户之前给该应用的授权选项,用户只需要点击一次确认即可完成授权,不需要重新勾选权限,看起来和普通登录流程一致。
适配建议
- 每次校验登录状态时调用
debug_token接口校验access_token有效性,如果返回错误码190且子码为459,说明用户已移除应用,需立即清空本地缓存的FB相关凭证,引导用户重新登录 - 不要将本地缓存的ASID作为唯一登录校验依据,必须以FB侧返回的token校验结果为准
- 重新登录流程尽量和首次登录流程复用,不要单独做异常拦截导致用户无法完成授权
内容的提问来源于stack exchange,提问作者HappyDev
相关产品推荐
相关产品推荐

