2012-03-20 2 views
4

사용자가 Facebook 계정으로 로그인 할 수있는 웹 사이트가 있습니다. javascript FB.login 메서드를 사용하여 Facebook 로그인 대화 상자를 표시하고 있습니다. 기본적으로 새 팝업 창이 표시됩니다. 많은 사용자가 브라우저에서 금지 된 팝업을 가지고 있습니다. 사용자가 로그인 버튼을 클릭 한 것과 동일한 창에 페이스 북 로그인 대화 상자를 표시하려면 어떻게합니까? 이게 작동한다는 것을 알 수 있습니다 website팝업 창 대신 동일한 창에서 페이스 북 로그인 대화 상자를 여는 방법은 무엇입니까?

사용자가 로그인 버튼을 클릭하면 페이스 북으로 리디렉션됩니다. FB에 로그인 한 후 원래 웹 사이트로 리디렉션됩니다. 같은 브라우저 탭의 모든 것.

답변

12

참조 : https://developers.facebook.com/docs/reference/dialogs/oauth/

오히려 FB.login()가 바로이 같은 페이지에 링크를 추가 사용하는 것보다 :

<a href="https://www.facebook.com/dialog/oauth/?client_id=YOUR_APP_ID&redirect_uri=YOUR_REDIRECT_URL&state=YOUR_STATE_VALUE&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES">LOGIN!</a>

Faceboo k는 다음의 사용자를 기록하고 쿼리 문자열에 대한 몇 가지 케이크와 함께 다시 URL로 리디렉션됩니다

YOUR_REDIRECT_URI? 
    error_reason=user_denied 
    &error=access_denied 
    &error_description=The+user+denied+your+request. 
    &state=YOUR_STATE_VALUE 
+0

YOUR_REDIRECT_URL이 (가) url_encoded일까요? –

+0

나는이 방법을 시도하지만 페이스 북이 내 URI "granted_scopes = email, public_profile & denied_scopes # _ = _"로 다시 리다이렉션 한 후에 만 ​​이러한 매개 변수를 얻었는데, 다음에 어떻게해야합니까? 어떤 제안이라도 환영합니다 ~ – RRTW

+0

감사합니다. –

0

설정 디스플레이 터치 트릭을 할

예를

form method="get" action="https://graph.facebook.com/oauth/authorize" id="openid_form">  
    <input type="hidden" value="" name="client_id" id="client_id"/> 
    <input type="hidden" value="touch" name="display" id="display"/> 

    <input type="hidden" value="http://www.mobileborg.com/modules/openid/fb_callbackuri.php" name="redirect_uri" id="redirect_uri"/> 
    <input type="hidden" value="email,read_stream,user_location,user_hometown,read_friendlists,user_photos,user_videos,publish_stream,offline_access" name="scope" id="scope"/> 

    <div style="display:block"> 
    <input type="hidden" name="oid_name" id="oid_name"/> 
    <input type="hidden" size="40" class="openid-identifier" name="openid_identifier" id="openid_identifier"/> 
    <input type="submit" style="display:none" value="Login" id="submit-button"/> 
    </div> 
</form 
+0

감사합니다. 양식을 사용하지 않는 솔루션을 선호합니다. 첨부 된 onclick 이벤트가있는 div 요소가 있습니다. 사용자가 div (로그인 버튼)를 클릭하면 FB.login 메소드가 호출됩니다. –

0

을 페이스 북에 따라 경찰은 동일한 브라우저 창에서 열립니다 display=page을 사용할 수 있습니다 documentation.

+1

누군가 왜 이것이 downvoted 얻었는지 설명하십시오? – coderama

+0

"display"는 "popup", "dialog", "iframe", "touch", "async", "hidden"또는 "none"중 하나 여야합니다. – shlensky

0

내 문제는 "External Links"모듈을 사용하도록 설정했기 때문입니다. 페이스 북의 URL을 외부로 보았고, 즉시 target = "_ blank"를 추가하여 모든 클릭이 새 창에서 열리게했습니다.

관련 문제