通常,我会使用firebase.auth.OAuthProvider('microsoft.com')
并将其传递给firebase.auth().signInWithPopup()
,但就我而言,我需要先使用their library登录Microsoft 并传递凭据回到firebase。 (为什么?因为我需要他们的accessToken/refreshToken
处理,而Firebase并没有处理)。
无论如何,我似乎找不到一种方法来获取Microsoft提供的凭据并将其成功传递回Firebase ...
这是不为我工作的内容:
export async function msLogin() {
const userAgent = new MSAL.UserAgentApplication({ auth: { clientId: CLIENT_ID, } });
const auth = await userAgent.loginPopup({ scopes: ['profile'] });
const provider = new firebase.auth.OAuthProvider('microsoft.com');
const idToken = auth.idToken.rawIdToken;
const credential = provider.credential(idToken);
await firebase.auth().signInWithCredential(credential); // **** THIS FAILS
// ... with "Invalid IdP response/credential: http://localhost?id_token=eyJ0eXAiO...0e9BeTObQ&providerId=microsoft.com"
Microsoft弹出窗口非常有用,我已经在那里成功登录并且能够发出API调用。但是我无法让Firebase接受这些凭据来登录Firebase。我已经在Firebase身份验证面板中启用了Microsoft OAuth提供程序,并且我确定CLIENT_ID匹配...
也许我在构造OAuthCredential
时错了吗?
非常感谢您的帮助!
ps:这是this SO post的延续。