Obtener un token por Github API

He creado manualmente un token en Github -> Settings -> Personal access tokens -> Generate new token y elegir solo el scope repo .

Este token funciona bien, así que con él puedo ingresar a la organización Tengo privilegios de write .

Entonces quiero hacer lo mismo (get un access_token) por github-api .

 params = dict(client_id=client_id, client_secret=client_secret, code=code) url = url_concat("https://github.com/login/oauth/access_token", params) req = HTTPRequest(url, method="POST", headers={"Accept": "application/json"}, body="") 

Como resultado, tengo tal json :

 { 'scope': 'repo', 'token_type': 'bearer', 'access_token': 'xxxxxxxx10755fbb6c281e92902ed122144886c5' } 

Es como todo correcto, pero no puedo ingresar a los repositorys de organizaciones donde tengo privilegios de write . Puedo presionar solo en mis propios repositorys.

¿Podrías ayudar? Cualquier idea sobre dónde hay un error o una inexactitud es bienvenida.

Entonces, si quieres hacer esto a través de la API de GitHub, tu request debe cambiar.

Primero necesita usar el punto final /authorizations manera:

 POST /authorizations Authorization: Basic ... Content-Type: application/json Content-Length: ... { "scopes": [ "repo", "write:org" ], "note": "Example from StackOverflow by @sigmavirus24", "client_id": "Your client_id here", "client_secret": "Your client_secret here", "fingerprint": "1234", } 

Esto debería devolver una respuesta 201 Created con un cuerpo así:

 { "id": 72249124, "url": "https://api.github.com/authorizations/72249124", "scopes": [ "repo", "write:org" ], "token": "abcdefgh12345678", "token_last_eight": "12345678", "hashed_token": "25f94a2a5c7fbaf499c665bc73d67c1c87e496da8985131633ee0a95819db2e8", "app": { "url": "http://my-github-app.com", "name": "my github app", "client_id": "abcde12345fghij67890" }, "note": "optional note", "note_url": "http://optional/note/url", "updated_at": "2017-02-08T20:39:23Z", "created_at": "2017-02-08T17:26:27Z", "fingerprint": "1234" } 

Excepto que será real.

Dicho esto, parece que intenta utilizar el punto final que permite usar GitHub como proveedor de authentication. En otras palabras, está creando una aplicación que permite a los usuarios iniciar session con GitHub. Si ese es el caso, entonces debe seguir específicamente el Flujo de aplicaciones web para OAuth .

En ese caso, eres parte del path pero estás enviando los parameters incorrectos.

Primero haces una request GET:

 GET https://github.com/login/oauth/authorize?client_id=<your-client_id>&scopes=repo%20write:org&state=something-random 

Luego recibirás datos de GitHub que debes usar en tu POST

 POST https://github.com/login/oauth/access_token?client_id=<your-client_id>&client_secret=<your-client_secret>&code=<code-from-github> Accept: application/json 

Después de eso, cualquier request que haga debe tener

 Authorization: token <token-received-in-response-to-POST> 

¡Aclamaciones!

    Intereting Posts