Как подключить github oauth 2.0 к http в javascript

Добрый день,

Я пытаюсь использовать github oauth2.0 apis и застрял при вызове /access_token с выборкой и аксиомами.

Я успешно получил /authorize API для работы и иметь client_id, client_secret, а также code успешно передан getAccessTokenфункция. Однако не удалось выполнить выборку с ошибкой cors.

Вещи, которые я исследовал

Код:

export const authorize = async () => {
  const uri = withQuery('https://github.com/login/oauth/authorize', {
    client_id: process.env.VUE_APP_CLIENT_ID,
    redirect_uri: 'http://localhost:8080/authorize',
    scope: 'read:user',
  });
  window.location.replace(uri);
};

export const getAccessToken = async (code: string) => {
  const { VUE_APP_CLIENT_ID, VUE_APP_CLIENT_SECRET } = process.env;

  const uri = withQuery('https://github.com/login/oauth/access_token', {
    client_id: VUE_APP_CLIENT_ID,
    client_secret: VUE_APP_CLIENT_SECRET,
    code,
  });

  axios({
    method: 'post',
    url: uri,
    headers: {
      accept: 'application/json',
    },
  }).then(response => {
    console.log('response: ', response);
  });
};

Ошибка Axios:

authorize:1 Access to XMLHttpRequest at 'https://github.com/login/oauth/access_token?client_id=abcdefgh&client_secret=abcdefgh' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

createError.js?2d83:16 Uncaught (in promise) Error: Network Error
    at createError (createError.js?2d83:16)
    at XMLHttpRequest.handleError (xhr.js?b50d:81)

1 ответ

Из-за некоторых ограничений, связанных с безопасностью, Github не позволяет разработчикам реализовывать поток веб-приложений OAuth только на стороне клиента.

Ссылки:

Рабочее решение:

Другие вопросы по тегам