Dar*_*te1 4 javascript azure firebase azure-active-directory firebase-authentication
作为 Web 开发的新手,我试图在 Vue.js Web 应用程序中实现以下目标:
为了使其正常工作,我遵循了Firebase 文档:
在项目中安装 Firebase,并将带有正确“客户端 ID”和“客户端密钥”的“Microsoft”“登录方法”添加到 Firebase 控制台。
在 Azure 应用程序注册中,我们还按照 Firebase 的建议添加了“重定向 URI”:
在我们的项目中,我们创建了一个“firebase.js”文件:
import * as firebase from "firebase/app"
import "firebase/auth"
var firebaseConfig = {
apiKey: process.env.FIREBASE_API_KEY,
authDomain: process.env.FIREBASE_AUTH_DOMAIN,
databaseURL: process.env.FIREBASE_DATABASE_URL,
projectId: process.env.FIREBASE_PROJECT_ID,
storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.FIREBASE_APP_ID,
measurementId: process.env.FIREBASE_MEASUREMENT_ID
}
let firebaseApp = firebase.initializeApp(firebaseConfig)
let provider = new firebase.auth.OAuthProvider('microsoft.com');
export { firebaseApp, provider }
Run Code Online (Sandbox Code Playgroud)
还有一个只有 2 个按钮的 Vue 组件:
<template>
<q-page padding>
<h3>Home</h3>
<p>Access token: {{ OAuthAccessToken }}</p>
<p>User details: {{ user }}</p>
<div>
<q-btn color="primary" @click="login"> Login </q-btn>
<q-btn color="primary" @click="logout" class="q-ml-xl"> Logout </q-btn>
</div>
</q-page>
</template>
<script>
import { firebaseApp, provider } from "boot/firebase";
export default {
name: "PageHome",
data() {
return {
OAuthAccessToken: ""
};
},
computed: {
user() {
// return 'test user'
let test = firebaseApp.auth().currentUser;
console.log("user ", test);
return test;
}
},
methods: {
login() {
firebaseApp.auth().signInWithRedirect(provider)
},
logout() {
firebaseApp
.auth()
.signOut()
.then(function() {
console.log("logout succes");
})
.catch(function(error) {
console.log("logout fail");
});
}
},
components: {},
mounted() {
firebaseApp
.auth()
.getRedirectResult()
.then(function(result) {
if (result.credential.accessToken) {
this.OAuthAccessToken = result.credential.accessToken;
console.log("token ", result.credential.accessToken);
}
})
.catch(function(error) {
console.log("fail ", error);
});
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
单击该login
按钮时,我们会正确重定向到 Microsoft 登录页面,并且可以使用 AD 凭据正确登录。之后我们也正确地重定向回应用程序。所以这部分工作正常。但是,控制台中显示以下错误:
我们尝试在“Azure 应用程序注册”中生成一个新密钥并使用它,但问题仍然存在。我们是否在这里遗漏了一些非常明显的东西?
感谢您的帮助。
小智 5
let provider = new firebase.auth.OAuthProvider('microsoft.com');
provider.setCustomParameters({
prompt: "consent",
tenant: "the tenant id provided by outlook",
})
Run Code Online (Sandbox Code Playgroud)
这将强制用户选择要登录的帐户,然后输入密码。您可以在获取客户端 ID 的同一位置找到租户 [目录(租户)ID]。希望这会有所帮助,因为我也遇到了同样的问题,并通过尝试几件事找到了解决方案。
归档时间: |
|
查看次数: |
3310 次 |
最近记录: |