2012-04-06 3 views
0

JS-SDK를 사용하고 있고 내 페이스 북 응용 프로그램으로 이미 허가 된 사용자가 있습니다.사용자 권한을 부여하는 방법

이제 열린 그래프 동작이 승인되어 게시되기 시작했습니다.

내 사용자가 내 웹 사이트를 방문하며 JS SDK는 FB.getLoginStatus를 사용하여 로그인 상태를 자동으로 취하고 사용자가 Facebook에 로그인 한 경우 작업을 수행합니다.

facebook은 Facebook에서 작업을 게시하는 데 "publish_actions"권한이 필요합니다. 그래서, "publish_actions"값으로 로그인 버튼에 attiribute 범위를 추가했습니다.이 값을 클릭하면 작동합니다.

하지만 문제가 있습니다. 오늘까지 사용자로부터이 허가를받지 못했습니다. 따라서 사용자가 JS SDK와 함께이 권한을 자동으로 수락하지 않은 경우이 권한을 수락하기 위해 창을 열려고합니다. 시스템이 이것을하지 않기 때문입니다. (더 명확 아이디어)

시나리오 :

1) 사용자가 지난 주에 내 웹 사이트에 와서 로그인 버튼을 승인했다.

2) 내 웹 사이트에 Open Graph를 추가하고 어제 로그인 범위에 attiribute 범위를 추가했습니다.

3) 사용자가 Facebook에 로그인했습니다. 그 후에 오늘 내 웹 사이트에 왔습니다. JS SDK는 "이 웹 사이트에 새로운 권한이 있습니다"등의 오류를 자동으로 승인하지 않았습니다.

그래서이 사용자에게 새로운 인증 대화 상자를 보여 드리고자합니다.

+0

내 경험에 따르면, 이것은 자동으로 이루어져야합니다. 사용자 계정에 대한 권한을 취소하고 앱에 로그인하여이를 테스트 할 수 있습니다. 새 권한을 수락할지 묻는 메시지가 나타납니다. –

+0

@AlexRockwell 그게 작동하지만 내 시나리오를 읽어주십시오. – xecute

+0

현재하고있는 일에 대한 코드 스 니펫을 게시 할 수 있습니까? –

답변

2

글쎄, 사용자가 귀하의 페이지를로드하면 js sdk에서 사용자가 귀하의 앱에 부여한 권한을 확인할 수 있습니다. publish_actions가 포함되지 않은 경우 권한 부여를 요청하십시오.

당신은 완전히 클라이언트 측에서 이런 일을 수행 할 수 있습니다

FB.api("me/permissions", function(response) { 
    if (response && response.data && response.data.lengh == 1 && !("publish_actions" in response.data)) { 
     FB.login(function(response) { 
      console.log(response); 
     }, { scope: "publish_actions" }); 
    } 
}); 

또는 대신 FB.login를 호출 인증 대화 상자에 사용자를 보낼 수 있습니다, 그것은 당신에게 달려 있습니다. 또한 클라이언트가 아닌 서버 측에서 비슷한 방식으로 사용 권한을 확인할 수 있습니다. 다시 한 번 당신의 책임입니다.

+0

이 코드를 차단하는 팝업 차단기 :/so, 내 웹 사이트에 버튼을 추가했습니다. "더 좋은 경험을 원하면 여기를 클릭하고 허락하십시오."/ – xecute

+1

물론 [FB.loging] (http://developers.facebook.com/docs/reference/javascript/FB.login/) 문서 : "* FB.login을 호출하면 JS SDK에서 팝업 창이 열리므로이 메서드는 사용자 클릭 이벤트가 발생하면 호출됩니다. 그렇지 않으면 팝업 창이 대부분의 브라우저에서 차단됩니다 * ". 이 코드는 올바른 방향으로 너지를주기위한 것입니다. 귀하의 질문에 대한 답변이 있으면 대답을 수락하십시오. –

+0

문서에 리스너를 추가했습니다. 따라서 사용자가이 권한없이 아무 데나 클릭하면 fb.login이 트리거됩니다. 문제 해결됨 :) – xecute

관련 문제