0

북마크 렛을 개발하여 사용자의 현재 웹 페이지를 긁어내어 일부 데이터를 저장하려고합니다. 내 웹 사이트에서 내 사용자는 Facebook API를 통해 로그인합니다. 내 북마크를 사용하는 경우북마크 릿을 통해 Facebook API 사용하기

, 나는 성공적으로 페이스 북 로그인 모달을 제시하지만, API의 기호에 예외가 발생 할 수 있습니다

지정된 URL이 응용 프로그램에 의해 소유되지 않습니다.

저는이 기능에 익숙하지 않지만 아마도 북마크릿에 액세스 한 현재 페이지가 내 도메인과 일치하지 않기 때문일 수 있습니다.

이 해당 도메인에서 호스팅되는 인 외부 파일에서 자바 스크립트를 실행하고 있습니다. 충분하지 않아야합니까?

또는 어떻게 해결할 수 있습니까? 불행히도 내 자신의 계정 관리 기능을 제공 할 수없고 내 사용자 관리를 위해 Facebook에 의존하고 있습니다.

모든 설명과 창의적인 아이디어는 높이 평가됩니다.

+0

체크 아웃 -이 충분하지 말아야 ? "_ - 아니요. 스크립트가 _로드 된 위치에 있기 때문에 현재 문서의 컨텍스트에서 _executed_가됩니다. – CBroe

+0

고마워요. 어쩌면 데이터를 긁어 내 도메인 (uugh)에 새 탭을 열고 거기에서 제출해야 할 수도 있습니다. 바라건대 누군가는 좀 더 우아한 것을 제안 할 것입니다. –

답변

0

해결책은 현재 페이지의 iframe 또는 새 탭 또는 새 팝업 창에서 자신의 도메인에 로그인 단계를 호스팅하는 것입니다. 아무튼 덜 어쨌든 너무 안전하지 않을 것입니다.

가능한 단계 :

  1. 북마크 실행 긁힌 자국 데이터입니다.
  2. 북마크는 src = "http : //yourdomain.com/bookmarklet-widget? data = ...."로 iframe을 만듭니다.
  3. 아직 로그인하지 않은 경우 먼저 위젯 내용 페이지에 로그인 단계가 필요합니다.

GET으로 제출할 데이터가 큰 경우 POST를 사용할 수 있습니다. 단계는 다음과 같을 것입니다

  1. 북 마 틀 러가 데이터를 실행하고 스크랩합니다.
  2. 북마크릿은 "mywidgetframe"과 같은 이름으로 빈 iframe을 만듭니다.
  3. Bookmarklet은 method = post target = mywidgetframe 및 action = "http://yourdomain.com/bookmarklet-widget"을 사용하여 양식을 만듭니다.
  4. 북마크 릿은 양식을 제출합니다.
  5. 이미 로그인하지 않은 경우 위젯 컨텐츠 페이지에 먼저 로그인 단계가 필요합니다. 당신은 iframe이/창 현재 상위 페이지 간의 직접 통신을해야하는 경우

, 내가 그 도메인에서 호스팅되는 외부 파일에서 자바 스크립트를 실행하고 "_ http://enable-cors.org/

+0

감사합니다. 매우 도움이되었습니다. 또한 다음 링크를 유용하게 사용했습니다. http://kathrynbrisbin.blogspot.com/2010/01/how-to-create-bookmarklet-like.html –

+0

링크를 통해 내가 실수 한 것을 알게되었습니다. 내가 공유 한 enable-cors 링크는 iframe 간 사이트 간 통신에 관한 것이 아닙니다.그것은 교차 사이트 AJAX를 활성화하는 것입니다. 교차 사이트 iframe 통신의 경우 "postMessage"기능을 확인하십시오. 공유 한 링크에서 그는 "giftyHandleMessage"에서 구식의 오래된 기술을 사용하고 있습니다. 아주 간단한 경우에는 괜찮을 수 있습니다. 오래된 브라우저에서 작업하는 장점이 있지만 상태를 저장하기 위해 해시 조각을 사용하는 웹 페이지를 잠재적으로 손상시키는 등의 단점도 있습니다. –