Секрет и идентификатор клиента будут упразднены в ближайшие месяцы [дубликат]
Aug 20 2020
Мой код работает, но формат запроса будет устаревшим в ближайшие месяцы.
Новый формат предложен на Github
curl -u my_client_id:my_client_secret https://api.github.com/users/user
Может ли кто-нибудь показать мне правильный способ его переформатирования, когда он устареет в ближайшие месяцы. Все перепробовала. Вот один из примеров того, что я пробовал:
Моя попытка не работает
`-u ${this.client_id}:${this.client_secret} https://api.github.com/users/${user}`
Мой текущий код
class Github {
constructor() {
// THESE ARE FAKE!!!
this.client_id = 'a71344259aec03d0cea3';
this.client_secret = 'a28202377336e199cb554bd099e6e5fe672788db';
this.repos_count = 7;
this.repos_sort = 'created: asc';
}
async getUser(user) {
const profileResponse = await fetch(
`https://api.github.com/users/${user}?client_id=${this.client_id}&client_secret=${this.client_secret}`
);
const repoResponse = await fetch(
`https://api.github.com/users/${user}/repos?per_page=${this.repos_count}&sort=${this.repos_sort}&client_id=${this.client_id}&client_secret=${this.client_secret}`
);
console.log(user);
const profile = await profileResponse.json();
const repos = await repoResponse.json();
return {
profile,
repos,
};
}
}
Ответы
2 Phil Aug 20 2020 at 06:54
Параметр -u
в curl
использует базовую аутентификацию HTTP .
Это берет user:password
строку, кодирует ее в кодировке base64 (например, user:password
=> dXNlcjpwYXNzd29yZA==
) и добавляет ее в Authorization
заголовок запроса, как это
Authorization: Basic dXNlcjpwYXNzd29yZA==
При использовании fetch
вы должны делать это вручную, используя что-то вродеbtoa()
const auth = btoa(`${this.client_id}:${this.client_secret}`)
fetch(`https://api.github.com/users/${encodeURIComponent(user)}`, { headers: { Authorization: `Basic ${auth}`
}
})