Firebase Auth и Google Войти - PullRequest
       12

Firebase Auth и Google Войти

2 голосов
/ 23 сентября 2019

Я использую javascript для входа в firebase auth, и я надеюсь получить доступ к Google Drive, используя тот же процесс, чтобы избежать входа в Google дважды.

Глядя на документы по https://firebase.google.com/docs/auth/web/google-signin, я вижу, что там написано: «Это дает вам токен доступа Google. Вы можете использовать его для доступа к API Google».

firebase.auth().signInWithPopup(provider).then(function(result) {
  // This gives you a Google Access Token. You can use it to access the Google API.
  var token = result.credential.accessToken;
  // The signed-in user info.
  var user = result.user;
  // ...
}).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // The email of the user's account used.
  var email = error.email;
  // The firebase.auth.AuthCredential type that was used.
  var credential = error.credential;
  // ...
});

В настоящее время я могу войти в них обоих по отдельности, вызвав это потом:

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.');
        }
    });
}

1 Ответ

1 голос
/ 26 сентября 2019

Вы можете просто использовать gapi.auth2.getAuthInstance().signIn() для входа, а затем использовать токен Google ID из этой библиотеки для входа в Firebase Auth.

Это описано в Официальных документах Firebase .

// 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.
  });
...