2010-07-13 3 views
0

canvas iframe application for Facebook을 만들려고합니다. 이 앱은 몇 가지 할 필요가 : 페이스 북 내에서Facebook 인증 워크 플로 - 지나치게 복잡합니까?

  1. 는 iframe이 애플 리케이션과 같은 모든 새로운 응용 프로그램을 구축하는 것이 좋습니다 당신의 벽

페이스 북에 친구에게

  • 포스트 메시지를 당신을 비교하는 리더를 표시를, 따라서이 API를 사용하십시오. PHP SDK를 다운로드하고 예제를 내 앱으로 설치했습니다.

    example.php가 사용자에게 로그인 버튼을 표시하는 이유에 대해 혼란스러워합니다. 현재 사용자가 이미 Facebook에 로그인되어 있다는 생각이 들지 않습니까?

    내 현재 솔루션은 승인을 위해 사용자를 http://graph.facebook.com/oauth/authorize으로 리디렉션 한 다음 OAuth 토큰 (나중에 메시지를 게시하기 위해)을 가져 와서 Facebook 캔버스의 애플리케이션 페이지로 돌아갑니다.

    내 앱과 관련된 현재 Facebook 사용자를 얻고 나중에 메일을 올릴 수있는 권한을 얻는 유일한 방법입니까?

  • 답변

    1

    는이 일을 내가 발견 한 가장 좋은 방법은 API 호출을 만들려고하는 것입니다 로그인 한 사용자 ID, 액세스 토큰, 이름 및 기타 기본 사항 (예 : $ facebook-> getUser() 또는 $ facebook-> getSession())에 액세스 할 수 있습니다. 그렇지 않으면 FacebookApiException을 발견하면 사용자가 로그인하지 않았으며 사용자를 리디렉션하여 액세스 토큰을 얻어야합니다. 가장 간단한 방법은 $ facebook-에 의해 반환 된 URL로 리디렉션됩니다> getLoginUrl() (http://github.com/facebook/php-sdk/blob/master/src/facebook.php 라인 322) 당신이 필요한 권한에 전달할 수 있습니다

    $facebook->getLoginUrl(
        array('req_params' => 'email,publish_stream', 
          'next' => 'http://www.redirct-upon-login.com', 
          'cancel' => 'http://www.redirect-if-user-clicks-cancel')); 
    

    당신은 (자바 스크립트에서 같은 일을 기본적으로 할 수있는 I 선호하는 팝업 대화 상자/창이 리디렉션 대신에 있음) :

    FB.login(function(response) { 
        if (response.session) { 
         if (response.perms.indexOf('publish_stream') != -1) { 
          //User has logged in and given us publish_stream permissions 
         ); 
         else { 
          //User has logged in but not given us publish_stream   
         } 
        } 
        else { 
        //User is not logged in 
    }, {perms:'offline_access,publish_stream'}); 
    

    예제에 대한 다른 질문에 대답하십시오.php를 사용하면 로그인 한 사용자가 로그인하지 않은 경우에만 로그인 버튼을 표시해야합니다. 그렇지 않으면 로그 아웃 버튼이 표시됩니다.

    리디렉션과 관련하여 기본적으로 OAuth는 제 3자가 사용자를 대신하여 조치 (예 : 사용자의 벽에 앱 게시)를 취하도록 허용하는 목적에 부합하는 방법입니다. Facebook은 사용자가 자신의 신원을 증명할 필요가 있도록 조치를 취하기 위해 타사 앱을 승인해야합니다 (그렇지 않으면 사용자를 가장 할 수 있음). 페이스 북은 당신의 앱 (이 때문에 페이스 북의 사이트로의 리다이렉트)이 아니라는 것을 요구하는 사람 일 필요가있다. 왜냐하면 당신의 앱이 단지 사용자를 위해 말할 수 있다면 매우 안전하지 않을 것이기 때문이다. 나는 동의 할 것이고 페이스 북의 문서는 이것을 조금이라도 도움이되지 않는다.

    0

    새 SDK의 getLoginUrl()getLogoutUrl() 메서드는 사용자가 지정된 권한을 부여하거나 제거하는 데 필요한 URL을 참조하는 것으로 이해해야합니다. 기존의 의미로 실제로 로그인하거나 로그 아웃하지 않아야합니다.

    사이트의 로그인 또는 로그 아웃이 사용 권한 변경을 나타내기 때문에 용어가 다소 적합합니다.

    자바 스크립트 인증에 대해서는 relevant post을보세요.

    0

    당신은 (당신이 단지 캔버스 응용 프로그램을 시작하는 경우 내가보기 엔 사용을 추천 할 것입니다 무엇 임) JS SDK있는 버튼에 대한 표시됩니다 텍스트 사용자 정의 할 수 있습니다 : 예를 들어

    <fb:login-button size="medium">Authorize MyCoolApp</fb:login-button> 
    

    를 : http://apps.facebook.com/fbrelll/xfbml/fb:login-button.

    내가 언급 한 OAuth 접근 방식도 올바르게 작동합니다. 호출이 성공하면

    try { 
        $response = $facebook->api('/me'); 
    } 
    catch (FacebookApiException $e) { 
        //User not logged in 
    } 
    

    : 서버 측에서 현재 로그인 한 사용자를 얻고 싶다면