Почему я получаю ответ 404, когда пытаюсь выполнить публикацию в github API при аутентификации с помощью токенов доступа oauth? - PullRequest
1 голос
/ 21 апреля 2019

Я использую библиотеку passportjs для аутентификации пользователей в приложении. Маркер доступа обычно генерируется, когда пользователи успешно проходят аутентификацию с помощью passportjs. Я пытаюсь создать ветку с помощью github API с этим токеном доступа, но без особого успеха, как с помощью оболочки octokit, так и с помощью супер-агента.

Сначала я попытался аутентифицировать октокит, указав ему имя пользователя и пароль, таким образом.

let octokit=new Octokit({
  auth:{
    username:username,
    password:password
  }
});

Тогда я смог создать ref / ветку без особых проблем. Тем не менее, когда я сделал то же самое, но с accesstokens, сгенерированными github SSO, как это

passport.use(new GitHubStrategy({
                clientID: keys.clientId,
                clientSecret: keys.clientSecret,
                callbackURL: "/auth/github/callback"
            },
            async (accessToken, refreshToken, profile, done) => {
                let octokit = new Octokit(auth: `token ${accessToken}`);
                const branchName = 'refs/heads/vue' + Math.random();
                let masterHash = '123x123x1231232';
                octokit.git.createRef({
                    owner: owner,
                    repo: 'gitDemo',
                    ref: branchName,
                    sha: masterHash
                }).then((data) => {
                    console.log('data ', data);
                });

            }

Я получаю сообщение об ошибке HttpError: Not found. Другой метод, который я попробовал - это отправить напрямую в конечную точку с помощью superagent, поместив код доступа в заголовок авторизации.

  const data={
          ref:'refs/heads/FooBranch',
          sha:masterHash
      };
const res2=await request.post('https://api.github.com/repos/SomeOwner/SomeRepo/git/refs')
                            .set('Authorization','token '+accessToken)
                            .send(data);

Однако, я все еще получаю HttpError: не найдена проблема. Я совершенно сбит с толку относительно того, что я, возможно, сделал неправильно. Спасибо и любая помощь будет принята с благодарностью!

...