Javascript Firebase身份验证和Google登录

Javascript Firebase身份验证和Google登录,javascript,firebase-authentication,google-signin,Javascript,Firebase Authentication,Google Signin,我正在使用javascript登录firebase auth,我希望使用相同的过程访问google drive,以避免登录google两次 在查看文档时,我可以看到上面写着“这给了你一个谷歌访问令牌,你可以用它访问谷歌API。” 目前,我可以分别登录到这两个站点,方法是在之后调用: gapi.auth2.getAuthInstance().signIn(); 但这会为用户生成两个登录。目前的目标是让用户登录firebase auth,然后在没有双重登录的情况下从google列出用户的文件 fu

我正在使用javascript登录firebase auth,我希望使用相同的过程访问google drive,以避免登录google两次

在查看文档时,我可以看到上面写着“这给了你一个谷歌访问令牌,你可以用它访问谷歌API。”

目前,我可以分别登录到这两个站点,方法是在之后调用:

gapi.auth2.getAuthInstance().signIn();
但这会为用户生成两个登录。目前的目标是让用户登录firebase auth,然后在没有双重登录的情况下从google列出用户的文件

function appendPre(message) {
    var pre = document.getElementById('form-results-ul');
    var textContent = document.createTextNode(message + '\n');
    pre.appendChild(textContent);
}

function listFiles() {
    gapi.client.drive.files.list({
        'pageSize': 10,
        'fields': "nextPageToken, files(id, name)"
    }).then(function (response) {
        appendPre('Files:');
        var files = response.result.files;
        if (files && files.length > 0) {
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                appendPre(file.name + ' (' + file.id + ')');
            }
        } else {
            appendPre('No files found.');
        }
    });
}
函数appendPre(消息){
var pre=document.getElementById('form-results-ul');
var textContent=document.createTextNode(message+'\n');
pre.appendChild(文本内容);
}
函数listFiles(){
gapi.client.drive.files.list({
“页面大小”:10,
“字段”:“下一个GetOken,文件(id,名称)”
}).然后(功能(响应){
appendPre('Files:');
var files=response.result.files;
如果(files&&files.length>0){
对于(var i=0;i
您只需使用
gapi.auth2.getAuthInstance().signIn()
登录,然后使用该库中的Google ID令牌登录Firebase Auth

这在中有记录


哦!非常感谢。
function appendPre(message) {
    var pre = document.getElementById('form-results-ul');
    var textContent = document.createTextNode(message + '\n');
    pre.appendChild(textContent);
}

function listFiles() {
    gapi.client.drive.files.list({
        'pageSize': 10,
        'fields': "nextPageToken, files(id, name)"
    }).then(function (response) {
        appendPre('Files:');
        var files = response.result.files;
        if (files && files.length > 0) {
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                appendPre(file.name + ' (' + file.id + ')');
            }
        } else {
            appendPre('No files found.');
        }
    });
}
// Build Firebase credential with the Google ID token.
const credential = firebase.auth.GoogleAuthProvider.credential(
    googleUser.getAuthResponse().id_token);
// Sign in with credential from the Google user silently.
firebase.auth().signInWithCredential(credential)
  .then((result) => {
    // User signed in.
  })
  .catch((error) => {
    // Error occurred.
  });