JSONP-запросы от LinkedIn и StumbleUpon - PullRequest
2 голосов
/ 06 декабря 2011

Я пытаюсь создать приложение, которое получает информацию об URL из разных социальных сетей, таких как Facebook, LinkedIn, Twitter, StumbleUpon, Digg и Delicious.

Я запрашиваю информацию с помощью REST и в основном получаю ответы в формате JSON. И разобрать их с помощью javascript (jQuery)

У меня не было проблем с подключением к Facebook, Twitter и Delicious с помощью метода jQuerys $ .getJSON с использованием JSONP dataType (добавление callback =? В URL), но проблема возникает с LinkedIn и StumbleUpon.

Когда я использую ту же технику, я получаю ошибки.

Для StumbleUpon

"invalid label"

{"result":{"url":"http:\/\/www.google.com\/","in_index":true,"publicid":"2pI1xR","views":201756,"title":"Google","thumbnail":"http:\/\/cdn.stumble-upon.com\/mthumb\/31\/10031.jpg","thumbnail_b":"http:\/\/cdn.stumble-upon.com\/bthumb\/31\/10031.jpg","submit_link":"http:\/\/www.stumbleupon.com\/submit?url=http:\/\/www.google.com\/","badge_link":"http:\/\/www.stumbleupon.com\/badge?url=http:\/\/www.google.com\/","info_link":"http:\/\/www.stumbleupon.com\/url\/www.google.com\/"},"timestamp":1323182766,"success":true}

Очевидно, что он не работает без типа запроса JSONP с момента его междоменного запроса. Я провел некоторое исследование и обнаружил, что проблема может заключаться в том, что jQuery отправляет запрос JSONP, но получает ответ JSON, а затем спотыкается. Если это правда, я не уверен, что я должен сделать, чтобы сделать это правильно. Я сделал ответный тест с JSONLint и получил правильный результат. Так что, похоже, проблема в том, как я его анализирую, а не в самом ответе.

Для LinkedIn я получаю следующее

"missing ) after argument list" 
IN.Tags.Share.handleCount({"count":18118,"url":"http://www.google.com/"}

Так что, очевидно, это недопустимые ошибки JSON и jQuery. Есть ли способ получить эти данные другим способом?

Так что я застрял здесь, поскольку вижу результаты, но не могу их проанализировать.

PS Я бы не хотел использовать для этого код на стороне сервера.

Вот код, который я использую:

var url = 'http://www.google.com';

// StumbleUpon
$.getJSON("http://www.stumbleupon.com/services/1.01/badge.getinfo?url=" + url +"&callback=?", function (data) {                    
   console.log(data);                    
});

$.getJSON("http://www.linkedin.com/cws/share-count?url=" + url +"&callback=?", function (data) {
   console.log(data);
});

1 Ответ

2 голосов
/ 19 сентября 2012

Я знаю, что это старый вопрос, но я работаю над чем-то похожим, хотя и не использую jQuery.Я заставил LinkedIn работать с другим URL-адресом:

https://www.linkedin.com/countserv/count/share?url={url}&format=jsonp

Ключом для меня в этом случае было использование значения jsonp для формата.json не сработало.Вам также нужно будет включить функцию обратного вызова.

Что касается StumbleUpon, я тоже получаю ошибки, но я обновлю этот ответ, если найду решение.

...