将 Firebase Google 登录信息添加到外部数据库
Posted
技术标签:
【中文标题】将 Firebase Google 登录信息添加到外部数据库【英文标题】:Adding Firebase Google Log-in Information to External Database 【发布时间】:2018-09-11 06:19:06 【问题描述】:我正在开发一个网络应用程序,目前,我正在尝试将一些 Firebase 谷歌身份验证信息(基本上是电子邮件或唯一 ID)发送到我的服务器上托管的外部数据库中。问题是,我不知道我应该在我的数据库中存储什么,或者我应该在哪里编写代码来存储它。通常,当我在 html 中创建表单时,我会编写一些 php 来发送名称之类的内容并存储它。但这似乎要复杂得多。我是 Firebase、PHP 等的非常新手,我真的可以使用一些指导。下面是我使用 Google 帐户登录的 Firebase 代码。如果我在其中的某个地方犯了错误,我深表歉意——我一直在使用在线教程作为开始。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="https://www.gstatic.com/firebasejs/4.12.0/firebase.js"></script>
<script>
// Initialize Firebase
var config =
apiKey: [apiKey goes here]
authDomain: [authDomain goes here]
databaseURL: [database URL goes here]
projectId: [projectID goes here]
storageBucket: [""]
messagingSenderId: [""]
;
firebase.initializeApp(config);
</script>
<script src="https://cdn.firebase.com/libs/firebaseui/2.6.3/firebaseui.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/2.6.3/firebaseui.css" />
<script type="text/javascript">
// FirebaseUI config.
var uiConfig =
signInSuccessUrl: 'loggedIn.html',
signInOptions: [
// Leave the lines as is for the providers you want to offer your users.
firebase.auth.GoogleAuthProvider.PROVIDER_ID
],
// Terms of service url.
tosUrl: '<your-tos-url>'
;
// Initialize the FirebaseUI Widget using Firebase.
var ui = new firebaseui.auth.AuthUI(firebase.auth());
// The start method will wait until the DOM is loaded.
ui.start('#firebaseui-auth-container', uiConfig);
</script>
<body>
<div id="firebaseui-auth-container"></div>
</body>
</html>
【问题讨论】:
【参考方案1】:如果您想存储经过身份验证的用户(php 或其他方式)可以访问的用户特定数据,则基本上每次需要访问用户特定数据时都需要将用户 ID 令牌发送到您的服务器。您从当前用户那里获得 ID 令牌:
firebase.auth().currentUser.getIdToken().then(function(idToken)
// You can now pass this ID token to your endpoint for manipulating user data.
)...
在您的服务器上,您将验证 ID 令牌并获取用户的 uid。以下是如何执行此操作的示例: How to verify firebase ID token with PHP(JWT)?
你可以从解码后的token中获取sub
字段来获取用户的uid
。
【讨论】:
我应该在我的代码中的哪个位置添加firebase.auth().currentUser.getIdToken().then(function(idToken)
部分?在括号内,我会使用诸如 HTTPS POST 调用服务器之类的东西,对吗?
您在向服务器发送请求之前添加该调用。假设用户想在结帐前检查他们的购物车信息,他们会向您的服务器发布请求并传递他们的 ID 令牌。正确的。在函数内部,您将使用 HTTPS POST。
所以我会把它放在var ui = new firebaseui.auth.AuthUI(firebase.auth());
之后?或者可能在signInOptions
括号内?我想我只是不太确定应该在什么时候将令牌/发送请求发送到我的服务器。
您随时调用它。以上是关于将 Firebase Google 登录信息添加到外部数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用firebase和flutter登录google后获取用户详细信息
Flutter Firebase Google 登录不起作用。账户选择后停止