2011-02-13 3 views
2

Facebook 응용 프로그램이 있지만 새로운 사용자에게 문제가 있습니다.Facebook 로그인이 허가 요청 대신 로고를 표시합니다.

직접 URL http://eriknijland.nl/raaddestraat/을 사용할 때 모든 것이 잘 동작합니다. 신규 사용자는 'Request for permission'화면으로 리디렉션됩니다.

페이스 북의 Canvas 페이지 http://apps.facebook.com/raaddestraat/ (iframe에서 앞서 언급 한 URL을로드)을 사용하면 처음으로 사용자가 권한 요청 대신 Facebook 로고를 볼 수 있습니다. 로고를 클릭하면이 권한 화면으로 리디렉션됩니다. 하지만 사용자가 로고를 클릭하는 경우는 거의 없습니다.

올바르게 수정하는 방법은 무엇입니까?

내 간단한 로그인 코드 : 권한 부여 기능에

function login() 
{ 
    $authorizationUrl = 'https://graph.facebook.com/oauth/authorize?client_id=' . $this->_applicationId . '&redirect_uri=' . $this->_redirectUrl; 

    header('Location: ' . $authorizationUrl); 
    exit(); 
} 

_redirectUrl 포인트. 그러나 새로운 사용자는 결코 여기에서 끝나지 않습니다. Facebook 사용 권한이 필요하기 때문에.

&은 PHP 리디렉션 대신 location.href를 사용하여 읽었습니다. 아무런 효과가 없습니다. top.location.href를 사용하면 효과가 있습니다. 그때 일하고 있어요. 하지만 내 응용 프로그램이 '페이스 북의 캔버스 iframe'을 종료하고 싶지 않아.

+0

JavaScript 버전 FB.login()을 사용할 때도 작동합니다. 팝업창에 의존하기 때문에 차단되는 경우가 많습니다. – Erik

+0

그냥 직접 해결했습니다. 자바 스크립트 리디렉션이 필요합니다. Facebook은 iframe 내에서 권한 화면을 허용하지 않습니다. 리디렉션 URL은 iframe URL을 사용하지 않지만 (예 :) http://apps.facebook.com/raaddestraat/index.php?auth – Erik

+0

JavaScript 리디렉션의 의미를 설명 할 수 있습니까? 근원 좀 줄 수있어? – Ian

답변

0

캔버스 페이지에서 youre가 iframe에있을 때 HTTP 레벨 리디렉션을 수행하면 iframe의 내용 만 변경됩니다. 현재, 페이스 북 페이지 iframe에로드하려고합니다. 오류가 있습니다. 대신 당신이 자바 스크립트 리디렉션을 수행해야

<? header('location: ...'); 

를 사용

. 이 모드에서는 다음을 제외하고는 공백 인 HTML 문서를 제공합니다.

<script> 
    window.top.location = 'https://graph.facebook.com/oauth/autho....' 
</script> 

여기서 위치 문자열은 Facebook 인증 URL입니다.