0

Facebook 초대 친구에게 자바 스크립트 코드를 사용할 때 몇 가지 문제가 있습니다. 상세 사항 :로그인하지 않은 페이스 북 사용자와 로그인 한 페이스 북 사용자를 차별화하지만 아직 응용 프로그램을 인증하지 않았습니다

  1. 사용자 페이스 북 A는 이미 우리의 웹 응용 프로그램을 허가하고, 우리가 할 수있는 권한 부여 오프라인 액세스를 자신의 액세스 토큰을.

  2. 사용자 A 웹에 로그인했습니다. 시스템은 A가 Facebook에서 자신의 계정 (웹상)을 동기화했음을 감지하여 Facebook에서 A의 정보를 검색합니다.

  3. 동일한 브라우저에서, 새 탭을 열고 Facebook에서 로그 아웃합니다. "그는 우리의 웹 (A가 이미 열려있는 탭)으로 이동, 클릭 페이스 북 B.

  4. 사용자 :

  5. 는 사용자 B는 컴퓨터을 차용하고 페이스 북에 있지만 자신의 계정으로 로그인 친구를 초대". 목록에는 사용자 A가 아닌 모든 사용자 B가 표시됩니다.. 수도는 우리의 웹 응용 프로그램 (사용자가 자신이 잘못 페이스 북 계정을 동기화 할 생각)에 대한 해제 예상 동작이 발생하기 때문에

이 시나리오는 (매우 드물게 발생하지만), 우리 그룹 테스터를 고민.

해당 사례를 중단하려면 사용자가 Google 애플리케이션 (사용자 A)을 승인 한 상태에서 현재 Facebook에 로그인 한 사용자 (사용자 B)와 차별화하고 싶습니다.

function showInvitationDialog() { 

      FB.init({ 
        appId:'${appId}', 
        cookie: false, 
        status: true, 
        xfbml: true 
       }); 

      FB.getLoginStatus(function (response) { 
       if (response.session) { 
        if (response.session.uid != ${fbId}) { 
         alert("You are currently logged in to FB with another account (different to the account you registered). Please make sure that you don't accidently use others FB account to invite"); 
         return; 
        } 
       } 

       var request_ids = FB.ui({ method: 'apprequests', 
            message: '<@spring.message code="friends.invitation.message" />', 
            data: 'hello'}); 
      }); 
    } 

위의 코드는 대부분의 경우에 작동하지만 문제가있다 : 현재 내가 이런 식으로 확인하고 있습니다

  1. 사용자 X '는 페이스 북 사용자 X 로그인, 그는 권한을 부여하는 경우 우리의 응용 프로그램이 이미 : response.session.uid = X_FacebookId -> 좋아, 우리는 사용자 X가 페이스 북에 로그인하지 않은 경우 그가
  2. 누구인지, response.session 사용자 X는 페이스 북 사용자 X로 로그인 한 경우 ==
  3. 정의되지 않은 ', 그는 아직 우리의 어플리케이션을 auhthorize하지 않았다. response.session == undefined

그래서 내가 두 경우 경우 3 대 경우 2를 구별 할 수없는, getLoginStatus의 결과는 동일하지만 나는 다르게 그것을 해결하려는 : 2

  • 경우 -> 계속을 함수를 호출하여 "로그인 대화 상자"팝업
  • 사례 3 -이 사용자에게 잘못된 Facebook 계정에 로그인했음을 알립니다.

이 상황에 대한 해결책이 있습니까? 어떤 아이디어든지 크게 평가 될 것입니다.그들은, 알 수없는 수단들이 응용 프로그램을 승인 한 의미가 페이스 북에 로그인하지만 응용 프로그램을 승인하지 않았 음을 의미합니다 not_authorized

{ 
    status: one of 'not_authorized'/'connected'/'unknown' 
    authResponse: .... 
} 

, 연결 :

답변

1

getLoginStatus는()와 같은 인 JSON 객체를 반환 페이스 북에 로그인하지 않았습니다.

또한

,이 문제를 쉽게 만들 수있는 인증 이벤트, 대기를 고려할 수 있습니다 (메모리에서 그렇게 정확하지 않을 수도 있습니다). http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/

+0

실제로받은 상태는 notConnected/connected/unknown입니다. 어쨌든 가이드 덕분에 :) –

+0

그래서 FB는 여전히 API를 많이 변경하고 있습니다 ... –