2013-09-07 1 views
0

저는 페이스 북과 트위터처럼 OAuth 2.0 제공 업체가되도록 웹 사이트를 설정하고 있습니다. 이 두 사이트는 버튼을 통해 "Facebook/Twitter로 로그인"할 수있게하여 인증 대화 상자를 엽니 다. 사용자가 로그인하면 상자가 닫히고 요청 페이지에 액세스 토큰이 생깁니다. 도메인 간 정책을 위반하지 않는 방식으로이 작업을 수행하는 방법은 무엇입니까?OAuth 자바 스크립트 API 제공

이 X-도메인 제한을 해결하기 위해 의도적 인 페이스 북 JS SDK는 자신의 서버에서로드되는 것 같다

? 또한

은, 어떤 점에서 액세스 토큰은 부모 창에 의해 수신된다? 자녀가 보냈거나 부모가 가져 왔습니까?

감사

답변

1

이는 부모 창에 과부에서 값을 전달하여 수행됩니다. 부모를 액세스하여 당신이 부모에게 가치를 전달할 수 있습니다 이것에 의해 그래서

var parent = window.opener.document.document; // by this you have reference to parent DOM 
var someParentElement = parent.getElementById("idOfParentDomElement"); // ex: accessing particular element on parent 

: 부모 윈도우가 열릴 때마다 자식 창은 액세스를 할 수 있습니다 그의 부모 참조가

var childDiv = document.getElemntById("SomeChildDiv").innerHTML; 
someParentElement.innerHTML = childDiv // passing html text to parent div 

읽기 이 here

받기 액세스 토큰에 대한 자세한는 OAuth flow의 일부입니다. oauth 토큰을 통해 부모 창으로 이동하여 window.opener으로 전달한 다음 부모 창에서 호출하여 window.close을 호출하여 창을 닫습니다. 이 부모가 액세스 토큰을 사용한 후에

편집 : 댓글 후 :

페이스 북은 PostMessage를를 사용은 iframe이나 플래시 기능은 브라우저에 따라 도메인 간 메시징을 처리합니다. 사이에 메시지를 처리하는 핵심 파일 인 all.js을 포함합니다. 그 메커니즘에 대한 자세한 내용을 볼 수 있습니다. here

+0

감사합니다. 성공하면 대답으로 받아 들일 것입니다. ;) – lwansbrough

+0

이렇게하면됩니다. 나는 보통 이것을한다. 문제가 있으면 의견을 게시하십시오. – Ashwani

+0

이것은 일반적으로 인증 대화 상자의 도메인이 창 열기와 동일하지만 작동하지 않는 경우에 작동합니다. 따라서 window.opener는 다른 도메인에 있기 때문에 속성이 없습니다. – lwansbrough