Obtener una respuesta posterior como json

Antes de comenzar, me gustaría pedir perdón por mi inglés, no es mi lengua materna.

Estoy intentando configurar OAuth2 para la autorización de GitHub.

Apreté el paso, donde debería enviar la request POST a github y recibir el token de acceso. El problema es que cuando envío una request POST, mi browser descarga automáticamente el file con token de acceso. Como no puedo abrir este file con javascript, bash get json como respuesta.

En la documentation está escrito que puedo cambiar aceptar encabezado y recibir json, pero no puedo escribir la request POST correcta.

Ya he probado muchas cosas, como esta:

$.ajax({ method: "POST", url: "https://github.com/login/oauth/access_token", dataType: "application/json" }); 

o

 $.ajax({ url: 'https://github.com/login/oauth/access_token', headers: { Accept : "application/json", } data: "data", success : function(response) { console.log(response); } }) 

etc

Pero me sale este error:

XMLHttpRequest no puede cargar github.com/login/oauth/access_token. Ningún encabezado 'Access-Control-Allow-Origin' está presente en el recurso solicitado. El origen ' http://braga.fedyunin.com.ua ' no está, por lo tanto, permitido. La respuesta tenía el código de estado HTTP 404.

No se puede encontrar información útil en google, así que tuve que registrarme aquí. Gracias por la ayuda.

Lea https://developer.github.com/v3/ en la sección: Intercambio de resources cruzados de origen

Intenté lo mismo, pero también fallé debido a la falta del encabezado Access-Control-Allow-Origin en la respuesta de la API de GitHub. Contacté con el soporte de GitHub y descubrí qué estaba pasando mal.

No funciona porque está intentando usar OAuth desde una aplicación web, que la API de GitHub no admite. Cuando se autentica de esta manera, su client_id y client_secret deben estar en la página web en alguna parte y enviarse con la request POST. La request completa, incluido su client_secret, se puede ver con Firebug o una herramienta similar. Debido a que es una mala idea exponer su client_secret, la API de GitHub no devolverá el encabezado Access-Control-Allow-Origin, lo que le impedirá recuperar el token.

Debe emitir el POST desde el server y get el token de esa manera. Cuando haces eso, client_secret está en tu server, no en los browseres de las personas.

La request de Ajax de su sitio a github.com falla porque los browseres siguen la misma política de origen para las requestes xhr. Esto significa que una request xhr solo puede realizarse para un recurso en el mismo origen. Para permitir requestes de origen cruzadas, el server necesita dominios Whitlelist que puedan acceder a un recurso en particular.

En su caso, para hacer esto, debe registrar su sitio como una aplicación en su count github, ingresando los detalles aquí: https://github.com/settings/applications/new