在本章中,我們將介紹如何在Firebase中設(shè)置Github身份驗證,使用Github賬號認證登錄。
第1步 - 啟用Github身份驗證
打開Firebase信息中心,然后點擊左側(cè)菜單中的身份驗證。 要打開可用方法的列表,需要在標簽菜單中單擊登錄方法。
現(xiàn)在可以從列表中選擇Github,啟用它并保存。參考下圖 -
第2步 - 創(chuàng)建Github應(yīng)用程序
按照此鏈接創(chuàng)建GitHub應(yīng)用程序。 需要將Firebase中的回調(diào)網(wǎng)址復(fù)制到授權(quán)回調(diào)網(wǎng)址字段中。 創(chuàng)建應(yīng)用程序后,需要將客戶端密鑰和客戶端密鑰從GitHub應(yīng)用復(fù)制到Firebase。
第2步 - 創(chuàng)建登錄按鈕
創(chuàng)建一個文件:index.html,并將添加兩個按鈕。參考代碼如下 -
<button onclick = "githubSignin()">使用Github賬號登錄</button>
<button onclick = "githubSignout()">Github賬號注銷</button>
第3步 - 登錄和退出
在這一步中,我們將創(chuàng)建用于登錄和注銷的兩個函數(shù):githubSignin和githubSignout。 這里將使用signInWithPopup()和signOut()函數(shù)。
示例
讓我們來看看下面的例子。參考函數(shù)的實現(xiàn) -
var provider = new firebase.auth.GithubAuthProvider();
function githubSignin() {
firebase.auth().signInWithPopup(provider)
.then(function(result) {
var token = result.credential.accessToken;
var user = result.user;
console.log(token)
console.log(user)
}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(error.code)
console.log(error.message)
});
}
function githubSignout(){
firebase.auth().signOut()
.then(function() {
console.log('Signout successful!')
}, function(error) {
console.log('Signout failed')
});
}
完整的代碼,如下所示 -
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<title>FireBase Example</title>
<script src="https://www.gstatic.com/firebasejs/4.9.1/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "AIzaSyAOSPYpgn7T_bKa6VbCaSeQlsw-3p3zqDs",
authDomain: "yiibai-firebase.firebaseapp.com",
databaseURL: "https://yiibai-firebase.firebaseio.com/",
projectId: "yiibai-firebase",
storageBucket: "yiibai-firebase.appspot.com",
messagingSenderId: "334522625008"
};
firebase.initializeApp(config);
var provider = new firebase.auth.GithubAuthProvider();
function githubSignin() {
firebase.auth().signInWithPopup(provider)
.then(function(result) {
var token = result.credential.accessToken;
var user = result.user;
console.log(token)
console.log(user)
}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(error.code)
console.log(error.message)
});
}
function githubSignout(){
firebase.auth().signOut()
.then(function() {
console.log('Signout successful!')
}, function(error) {
console.log('Signout failed')
});
}
</script>
</head>
<body>
<button onclick = "githubSignin()">使用Github賬號登錄</button>
<button onclick = "githubSignout()">Github賬號注銷</button>
</body>
</html>
刷新頁面后,可以點擊使用Github賬號登錄按鈕觸發(fā)Github彈出窗口。 如果登錄成功,開發(fā)者控制臺將登錄指定的用戶賬號。有關(guān)更新詳細的賬號認證信息,請查看文檔: https://developer.github.com/v3/oauth/ 。
也可以點擊Github賬號注銷按鈕從應(yīng)用程序注銷??刂婆_將顯示確認注銷成功。