Есть ли способ получить имя пользователя GitHub с аутентификацией в Firebase? - PullRequest
0 голосов
/ 19 мая 2019

По сути, я пытаюсь создать веб-сайт, который аутентифицирует учетную запись пользователя GitHub через firebase, а затем сохраняет его имя пользователя в базе данных - мне специально для этого нужно имя пользователя. У меня работает аутентификация, но похоже, что у firebase нет способа получить доступ к имени пользователя, есть только такие вещи, как электронная почта, отображаемое имя и т. Д. В настоящее время я просто хочу сохранить имя пользователя как переменную

Я сталкивался с этим: https://developer.github.com/v3/users/#get-the-authenticated-user Я полагаю, "логин" это имя пользователя? Хотя я относительно новичок в этом деле и не могу найти каких-либо четких примеров того, как я мог бы получить доступ к этой информации с помощью моего токена из firebase. Для справки у меня есть index.html, связанный с app.js, который содержит весь мой код аутентификации.

var provider = new firebase.auth.GithubAuthProvider();
    provider.addScope('read:user');
    //get elements
    const authenticateBtn = document.getElementById('authbtn');

    //add login event
    authenticateBtn.addEventListener('click', e=>{

        firebase.auth().signInWithPopup(provider).then(function(result) {
        // This gives you a GitHub Access Token. You can use it to access the GitHub API.
        var token = result.credential.accessToken;

        // The signed-in user info.
        var user = result.user;

        //what I want to get
        //var Username = ; 

        //some data I am able to get
        var displayName = user.displayName;
        var email = user.email;
        var emailVerified = user.emailVerified;
        var photoURL = user.photoURL;
        var isAnonymous = user.isAnonymous;
        var uid = user.uid;
        var providerData = user.providerData;

        //where I want to print the username
        //console.log(userName);


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

Мне просто нужно объяснение начинающим, возможно ли то, что я хочу сделать, и если да, то какой именно код мне понадобится в моем проекте. Спасибо!

1 Ответ

0 голосов
/ 20 мая 2019

Итак, я получил помощь от друга, вот мое решение:

firebase.auth().signInWithPopup(provider).then(function(result) {

        // This gives you a GitHub Access Token. You can use it to access the GitHub API.
        var token = result.credential.accessToken;
        // The signed-in user info.

        var user = result.user;
        var username;
        var obj;

        const Http =  new XMLHttpRequest();
        Http.open("GET", "https://api.github.com/user?access_token="+token);
        Http.send();

        Http.onreadystatechange=function(){
            if(this.readyState==4 && this.status==200){
                obj = JSON.parse(Http.responseText);
                username = obj.login;
                console.log(username);

            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...