gpt4 book ai didi

ios - MSAL - 在 iOS 上获取用户名

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:10 26 4
gpt4 key购买 nike

最近,我们使用 Microsoft 身份验证库 (MSAL - https://github.com/AzureAD/microsoft-authentication-library-for-objc) Objective-C 库在我们的应用中实现了登录/注册机制。一切正常,但是现在我们想要显示当前登录用户的名称。

MSALAccount 类中有 username 公共(public)属性 - https://github.com/AzureAD/microsoft-authentication-library-for-objc/blob/dev/MSAL/src/public/MSALAccount.h#L37 ,但大多数时候它包含 nil 或一些字符串,例如“ token 响应中缺少”。

在同一 MSALAccount 类中还有一个名为 name ( https://github.com/AzureAD/microsoft-authentication-library-for-objc/blob/dev/MSAL/src/MSALAccount%2BInternal.h#L52 ) 的私有(private)/内部属性。我们在调试期间注意到此属性包含正确的用户名(例如,如果用户通过 FB 登录,则为 Facebook 上的用户名),而 username 属性仍包含 nil

有谁知道获取此 name 属性值的方法,除了:

  • 调用私有(private) API(例如 performSelector:)
  • 查看库的源代码并复制逻辑获得 Prop 值(value)

谢谢。

最佳答案

这是 B2C 和 MSAL 的已知问题。原因是因为社交帐户的限制,B2C 不会在首选用户名的 IdToken 中返回值。比如AAD这里确实会返回一个值,因为它知道用户是谁,但是对于b2c,因为用户可以用本地账号登录,FB、Github、Amazon等...没有一个一致的值用于首选用户名。此外,某些社交帐户(如 Github)不需要电子邮件。所以...为了阻止 MSAL 推出与 ADAL 的缓存兼容性,MSAL 决定在处理 B2C 帐户时在其端使用“ token 响应中缺失”,因为如果它为 null 将违反架构。在这些情况下,如果 IdToken 中的首选用户名为 null,MSAL 会添加常量“ token 响应中缺少”。

但是,您可以使用“名称”声明作为首选用户名。我相信您可以将其添加到政策中。通常在这个 B2C doc 中提到-> “在返回声明列中,选择您希望在成功的配置文件编辑体验后发送回您的应用程序的授权 token 中返回的声明。例如,选择显示名称、邮政编码。”

关于ios - MSAL - 在 iOS 上获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com