无法在 React Native App 中使用 localStorage 作为缓存位置

Unable to use localStorage as cache location in React Native App

我正在使用 expo-cli 开发 React Native 应用程序。我正在使用 ADFS 对应用程序中的用户进行身份验证,特别是,我正在使用 MSAL.js。我已经在网络上进行了身份验证,但是,我无法在 iOS 或 Android 上将应用程序设置为 运行。我收到错误:"The cache location provided is not valid. Provided value: localStorage. Possible values are: localStorage, sessionStorage."

我试过使用 sessionStorage 而不是 localStorage,但我得到了同样的错误,除了它告诉我提供的值是 sessionStorage。

我在此处找到了一个线程,其中有人也遇到了类似的问题:。我尝试了解决方法,但随后收到错误消息:"undefined is not a constructor (evaluating 'new Msal.Storage("localStorage")')".

如果我尝试调用 Msal.Storage("localStorage"),它会告诉我 msal.Storage 不是函数。

我也尝试过从我的配置中明确地将值传递给 UserAgentApplication 函数,而不是传递配置本身:

var myMSALObj = new Msal.UserAgentApplication(msalConfig.auth.clientId, msalConfig.auth.authority, msalConfig.auth.redirectURI, { cacheLocation: 'localStorage' });

这是我认为问题所在的代码片段:

const msalConfig = {
    auth: {
        clientId: "<client-Id>",
        authority: "<authority>",
        redirectURI: "http://localhost:19006"
    },
    cache: {
        cacheLocation: "localStorage",
        storeAuthStateInCookie: true
    }
};

//new Msal.Storage("localStorage");
var myMSALObj = new Msal.UserAgentApplication(msalConfig);

我希望对 UserAgentApplication 的调用能够在 iOS 和 Android 上正确使用 localStorage 作为缓存,但情况似乎并非如此。不过,该应用程序在我笔记本电脑上的浏览器中运行完美,没有任何 cache/localStorage 问题。是否有不需要 Msal.Storage 的 workarounds/fixes?非常感谢任何帮助!

我只是编写了自己的库来完成它。我想 MSAL.js 没有正确的调用来使用移动浏览器。

https://yarnpkg.com/en/package/azure-ad-graph-expo

下面的库正是我想要的,即登录到 Azure AD,检索令牌,然后使用该令牌查询 MS 图形以获取适当的用户数据。