如何判断Flutter应用中用户当前会话是通过Google还是Facebook登录的?
关于User.providerData的两个疑问解答
获取当前会话的登录提供商:
User.providerData只能返回该用户关联的所有登录提供商集合,没法直接拿到当前会话使用的那个。你可以在用户登录成功时,从登录返回的UserCredential对象里提取providerId字段(这就是当前登录用的提供商),把这个值存在本地存储(比如localStorage)或者会话存储里,之后需要时直接读取就行。User.providerData的排序规则:
你判断得没错,这个列表不会按关联顺序或登录顺序排序,也不会重复添加已关联的提供商。它本质是用户已绑定的唯一提供商集合,排序逻辑由底层Auth服务决定(比如按提供商名称字母排序,或是服务内部的固定顺序),和你关联、登录的先后完全没关系。比如你先关联Google再关联Facebook,列表可能是[Google, Facebook],但之后再用Google登录,列表还是这两个,既不会新增条目,顺序也不会改变。
内容的提问来源于stack exchange,提问作者sm-sayedi
相关产品推荐
相关产品推荐

