를 사용하여 이라는 기능을 콜백을 위해$.getJSON 에 jQuery 을 충족 Facebook 요청을 서명 요구

StackOverflow https://stackoverflow.com/questions/203194

문제

나에 액세스하려 Facebook API 관리에 있습니다.getMetrics 방법을 통해 jQuery.내가 올바로 구성하는 요청 url 을 서버 측에서(유지하기 위해서는 내 응용 프로그램 비밀 비밀).나는 다음 url 을 보내 통해할 수 있도록 브라우저를 사용하여 요청 jQuery.getJSON().

Facebook 필요는 사본을 보내의 모든 요청 매개 변수는 해시된 내 응용 프로그램과 비밀와 함께 요청하기 위해서 확인 신뢰성이다.문제는 jQuery 을 생성하고 싶어의 이름을 콜백 함수에서 자신을 일치시키기 위해 이름을 제공하는 익명의 기능을 전달라고 할 때 데이터를 반환합니다.따라서,함수의 이름을 사용할 수 없을 때까지 jQuery.getJSON() 실행 및 Facebook 고려 나를 요청할 정품이 아닌 때문에 일치하지 않는 서명(signature 보낼 따라 포함되지 않은 올바른 콜백 param 기 때문에 생성되지 않았습까지 jQuery.getJSON() 실행).

유일한 방법으로 생각할 수 있고 이 문제에게 이름을 지정합의 기능을 jQuery.getJSON() 할 수 있도록 허용하는 대신 그것을 익명으로 남아있다.그러나 나는 찾을 수 없습니다에 대한 옵션에서 그렇게 jQuery 어 있는 AP 들을 다시 찾는다.

도움이 되었습니까?

해결책 2

사용 jQuery.getScript 대답에 가까운 것으로 판명되었습니다. getScript를 사용하면 jQuery가 요청 매개 변수에 동적으로 명명 된 익명 함수를 추가해야 할 필요성을 제거합니다 (위의 코드에서와 같이 익명 함수를 전달하면 여전히 수행 할 수 있습니다). 그러나 기본값은 jQuery.getScript, jQuery의 Ajax 라이브러리의 다른 모든 호출에서와 같이 추가 논쟁을 추가하는 것입니다. _=12344567 (여기서 1234567은 실제로 타임 스탬프입니다). JQuery는 브라우저가 응답을 캐싱하는 것을 방지하기 위해이를 수행합니다. 그러나이 추가는 자동 이름이 이름 콜백 함수와 마찬가지로 요청의 서명을 중단합니다.

#JQuery에 대한 도움으로 jQuery가 당신의 매개 변수를 전혀 엉망으로 만들지 않는 유일한 방법은 기본을 사용하여 요청을하는 것임을 알게되었습니다. jQuery.Ajax 다음 인수가있는 방법 :

jQuery.ajax({
  url: fbookUrl,
  dataType: "script",
  type: "GET",
  cache: true,
  callback: null,
  data: null
});

(어디 fbookUrl 서명과 callback=myFunction). 그만큼 dataType: "script" Arg는 결과 JSONP가 실행을 위해 페이지의 스크립트 태그로 채워야한다고 지정합니다. cache: true jQuery에게 브라우저가 응답을 캐시 할 수 있도록합니다. 즉, 타임 스탬프 매개 변수의 추가를 건너 뛰는 것입니다.

다른 팁

나를 위해 일을 한 유일한 것은 다음 설정이었습니다.

jQuery.ajax({ url: fbookUrl, dataType: "jsonp", type: "GET", cache: true, jsonp: false, jsonpCallback: "MyFunctionName" //insert here your function name });

JSONP 옵션을 $ .ajaxSetup으로 전달하여 호출되는 기능 이름을 수정할 수 있으며 문서는 다음과 같이 읽습니다.

JSONP 문자열
JSONP 요청에서 콜백 함수 이름을 무시하십시오. 이 값은 '콜백 =?'에서 '콜백'대신 사용됩니다. get 또는 게시물의 데이터에 대해 URL의 쿼리 문자열의 일부. {jsonp : 'onjsonpload'}}가 'onjsonpload =?'가됩니다. 서버로 전달되었습니다.

여기를 봐 http://docs.jquery.com/ajax/jquery.ajax#options 자세한 사항은

이것은 더 나은 솔루션과 함께 고정 callback:

window.fixed_callback = function(data){
    alert(data.title);
};

$(function() {
    $.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
    alert('done'); } );
});

문제로 이러 콜백은 당신만을 처리할 수 있는 하나의 종류에 요청시 기능은 전 세계적으로 등록합니다.콜백 함수 관계가 있음을 보여 주었으로 발송자에 대한 서로 다른 종류의 데이터를 검색할 수 있고 부르는 적절한 기능입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top