У меня была похожая проблема с выполнением запросов JSONP от Jquery, приведенный выше ответ помог мне просто добавить то, что я сделал для достижения своего решения.
Я выполняю oauth от сервера к серверу, а затем отправляю токен oauth, секрет, ключ потребителя и секрет (это временное решение, когда мы устанавливаем прокси-сервер для защиты секрета потребителя). Вы можете заменить его токеном, получающим код на клиенте.
Oauth.js и Sha1.js ссылка для скачивания !
После того, как подпись сгенерирована.
Сейчас есть 2 проблемы:
- Заголовок JSONP нельзя редактировать
- Подписанные аргументы, которые необходимо отправить как часть oauth, имеют проблему с callback =? (обычный способ использования JSONP).
Как сказано выше, ответ 1 не может быть сделан.
Кроме того, обратный вызов =? не будет работать, так как список параметров должен быть подписан и при отправке запроса на удаленный сервер Jquery заменить callback =? к какому-то имени, как callback = Jquery1232453234. Поэтому должен использоваться именованный обработчик.
function my_twitter_resp_handler(data){
console.log(JSON.stringify(data));
}
и getJSON не работали с обработчиком именованных функций, поэтому я использовал
var accessor = {
consumerSecret: XXXXXXXXXXXXXXXXXXXXXX,
tokenSecret : XXXXXXXXXXXXXXXXXXXXXX
};
var message = { action: "https://api.twitter.com/1/statuses/home_timeline.json",
method: "GET",
parameters: []
};
message.parameters.push(['realm', "https://api.twitter.com/1/statuses/home_timeline.json"]);
message.parameters.push(['oauth_version', '1.0']);
message.parameters.push(['oauth_signature_method', 'HMAC-SHA1']);
message.parameters.push(['oauth_consumer_key', XXXXXXXXXXXXXXXX]);
message.parameters.push(['oauth_token', XXXXXXXXXXXXXXX]);
message.parameters.push(['callback', 'my_twitter_resp_handler']);
OAuth.completeRequest(message, accessor);
var parameterMap = OAuth.getParameterMap(message.parameters);
Создание URL-адреса с базовыми парами URL-адресов и значений ключа из карты параметров
jQuery.ajax({
url: url,
dataType: "jsonp",
type: "GET",
});