2017-05-19 32 views
1

Ich möchte eine einfache API-GET-Anfrage machen, um Benutzer-E-Mail basierend auf Account-Name/Benutzernamen zu erhalten. Ich benutze Axios und wenn ich GET Anfrage mit dieser https://api.github.com/users/[username] mache, bekomme ich alles, was ich brauche (Repository, Follower ...) außer der Benutzer-E-Mail. Es ist immer null. Es wäre genug für mich, nur die E-Mail von Benutzern zu erhalten, die es als eine öffentliche in ihrem Profil festlegen, aber egal, was es festgelegt ist, wird immer Null zurückgeben. Ich lese, dass ich vielleicht eine Genehmigung brauche. Ich habe ein persönliches Access Token auf meinem GitHub-Account erstellt, aber wie würde ich es verwenden? Was ist der beste Weg, um Benutzer-E-Mails zu erhalten?Github Api, Benutzer E-Mail abrufen

Dies ist, was ich jetzt habe

import axios from 'axios' 

const REQUEST = 'https://api.github.com/users/' 


module.exports = { 
    getData: (accountName) => { 
    const encodedAccountName = encodeURIComponent(accountName) 
    const requestUrl = `${REQUEST}${encodedAccountName}` 

    return axios.get(requestUrl).then((res) => { 
     return res 
    }) 
    } 
} 

Antwort

1

Ok . Ich habe es geschafft, dass das so funktioniert. Ich sende einfach einen Header mit PersonalAccessToken zusammen mit Anfrage. Sie können ein persönliches Zugangstoken auf der github-Seite unter Einstellungen/Persönliches Zugangstoken/Neues Token erstellen und Benutzer: E-Mail für Geltungsbereich erhalten. Es wäre gut, jetzt die ENV-Variable für das Zugriffstoken zu verwenden.

import axios from 'axios' 

const REQUEST = 'https://api.github.com/users/' 

var config = { 
    headers: {'Authorization': 'token 847762643...'} 
} 

module.exports = { 
    getData: (accountName) => { 
    const encodedAccountName = encodeURIComponent(accountName) 
    const requestUrl = `${REQUEST}${encodedAccountName}` 

    return axios.get(requestUrl, config).then(res => { 
     return res 
    }) 
    } 
} 
+0

Interessante Alternative. +1 – VonC

0

Sie an dem von Requestable.js Objekt aussehen können GitHub.js tool

Sie den AuthorizationHeader auf einem Token enthält keine Definition zugrunde:

this.__apiBase = apiBase || 'https://api.github.com'; 
    this.__auth = { 
    token: auth.token, 
    username: auth.username, 
    password: auth.password 
    }; 
    if (auth.token) { 
    this.__authorizationHeader = 'token ' + auth.token; 
    } else if (auth.username && auth.password) { 
    this.__authorizationHeader = 'Basic ' + Base64.encode(auth.username + ':' + auth.password); 
    } 
+0

Dank VonC. Ich werde diesen Weg auch untersuchen, aber für jetzt können Sie meine Antwort sehen, wie ich es geschafft habe, es zu funktionieren, obwohl OAuth eine bessere Lösung wäre. –