客户端 --------验证 ------->> Firebase
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
const googleAuthProvider = new firebase.auth.GoogleAuthProvider();
const auth = firebase.auth();
const authenticates = await auth.signInWithPopup(googleAuthProvider).then(user => user).catch(err => err)
客户端
您将从authenticates响应中获取数据
authtoken = authenticates.credential.idToken
email = authenticates.user.email
...
客户端 --------- 发送 ------------->> 应用服务器(NodeJS)
const sends = await axios({
method: 'post',
url: `${API_BASE_URL}/request`,
headers: {
'Authorization': `Bearer ${authtoken}`,
},
data: {
from: next_cursor,
size: next_cursor + 100,
}
});
应用服务器 ------- 验证(身份验证令牌)---->> Firebase
当我们初始化 firebase 身份验证时,我们将拥有 app_oauth2_client_id
import { OAuth2Client } from 'google-auth-library';
const oauth2Client = new OAuth2Client(process.env.app_oauth2_client_id);
function verifyOauth2Token(token) {
const ticket = await oauth2Client.verifyIdToken({
idToken: token,
audience: [process.env.app_oauth2_client_id]
});
return ticket.getPayload();
}
const tokenInfo = await verifyOauth2Token(token);
tokenInfor
{
iss: 'accounts.google.com',
azp: '671303332471-5n8014rorllmd09n8mmadesc2qidpda5.apps.googleusercontent.com',
aud: '671303332471-5n8014rorllmd09n8mmadesc2qidpda5.apps.googleusercontent.com',
sub: '100037911230177975416',
email: 'testapp@gmail.com',
email_verified: true,
at_hash: '3rxsMOftrr9NZWlBkYznuQ',
iat: 1635842823,
exp: 1635846423
}