Instagram API access_token запрос и Access-Control-Allow-Origin
контекст
Я пытаюсь получить токен доступа из Instagram API, используя их серверный / явный поток.
Когда пользователь успешно аутентифицирует и авторизует мое приложение, Instagram перенаправляет пользователя на мой redirect_uri с параметром кода. Получив этот код, я пытаюсь вызвать API Instagram, чтобы получить access_token.
проблема
Я успешно получил этот код, но для того, чтобы сделать этот обмен, мне нужно отправить POST-код вместе с некоторыми параметрами идентификации приложения к их конечной точке access_token:
$.ajax({
type: 'POST',
url: 'https://api.instagram.com/oauth/access_token',
// Disable credentials as they were enabled by default
xhrFields: {
withCredentials: false
},
crossDomain: true,
data: {
client_id: client_id,
client_secret: client_secret,
grant_type: 'authorization_code',
redirect_uri: callback_http,
code: token
},
}).always(function(res) {
console.log('Res from Instagram API', res);
});
Проблема в том, что у меня возникает проблема Access-Control-Allow-Origin:
XMLHttpRequest cannot load https://api.instagram.com/oauth/access_token.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin '[here is my callback_http]' is therefore not allowed access.
Я попытался использовать dataType: 'jsonp' в качестве параметра вызова Ajax без какого-либо успеха (код 401).
Есть идеи? Заранее большое спасибо за вашу помощь!
3 ответа
Вы должны использовать серверный код для oauth при использовании явного потока на стороне сервера, он блокируется браузером из-за перекрестного запроса. если вы хотите использовать только JavaScript, используйте неявный поток на стороне клиента
Вы не можете, если он не размещен в вашем домене или у вас нет URL.
Вы можете обратиться к этому http://en.wikipedia.org/wiki/Same-origin_policy
если вы являетесь владельцем сервера, вы можете использовать htaccess для решения вашей проблемы. вопрос о том, как решить, что находится в stackru также..
Удачного кодирования!:D
используйте window.location.href, чтобы избежать проблем с корсами
window.location.href =
https://api.instagram.com/oauth/authorize/?app_id=${clientId}&redirect_uri=${redirectUri}&scope=${scope}&response_type=${responseType}