Home > database >  Getting 401 Unauthorized error while requasting GitHub API
Getting 401 Unauthorized error while requasting GitHub API

Time:05-22

Good evening. My task is to create a website with react that will list through github users. I was following this instruction: enter image description here

I cannot solve it for two days already, please help.

CodePudding user response:

You don't need any authentication for that endpoint. Here's a working example:

body { font-family: sans-serif; }
button, input[type="text"] { font-size: 1rem; padding: 0.2rem; }
pre { font-family: monospace; font-size: 1rem; }
.vertical { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
<!-- Babel seemed to have trouble with this, so I'm putting it on window -->
<script type="module">
  import {Octokit} from 'https://cdn.skypack.dev/[email protected]';
  window.Octokit = Octokit;
</script>

<div id="root"></div><script src="https://unpkg.com/[email protected]/umd/react.development.js"></script><script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script><script src="https://unpkg.com/@babel/[email protected]/babel.min.js"></script>
<script type="text/babel" data-type="module" data-presets="env,react">

// import * as ReactDOM from 'react-dom/client';
// import {useState} from 'react';
// import {Octokit} from 'octokit';

// This Stack Overflow snippet demo uses UMD modules instead of the commented import statments above
const {useState} = React;

const octokit = new Octokit();

function App () {
  const [user, setUser] = useState('maria98kgm');
  const [userData, setUserData] = useState(undefined);
  const [error, setError] = useState(undefined);

  const updateUserData = async () => {
    try {
      const username = user.trim();
      const response = await octokit.request(`GET /users/${username}`);
      setUserData(response.data);
      setError(undefined);
    }
    catch (ex) {
      if (ex instanceof Error) setError(ex);
      else console.error(ex);
    }
  };

  const displayString = error
    ? error.toString()
    : userData
      ? JSON.stringify(userData, null, 2)
      : 'No data yet';

  return (
    <div>
      <div className="vertical">
        <input
          type="text"
          onChange={ev => setUser(ev.target.value)}
          value={user}
        />
        <button onClick={updateUserData}>Update user data</button>
      </div>
      <pre><code>{displayString}</code></pre>
    </div>
  );
}

const reactRoot = ReactDOM.createRoot(document.getElementById('root'));
reactRoot.render(<App />);

</script>

CodePudding user response:

Explanation of the error.

The 404 status code means your authentication data are not the good ones.

How to solve it.

  • Related