복붙노트

Facebook PHP SDK getUser가 항상 0을 반환하는 이유는 무엇입니까?

PHP

Facebook PHP SDK getUser가 항상 0을 반환하는 이유는 무엇입니까?

Facebook 사용자의 일부 정보가 필요한 웹 사이트에서 작업하고 PHP와 JS SDK를 사용하고 있습니다.

PHP에서 함수가 있습니다.

public function isLoggedOnFacebook() {
    $user = $this->_facebook->getUser();
    if ($user) {
        return $this->_facebook->api("/$user");
    }
    return false;
}

$ this -> _ facebook에서 SDK의 facebook 객체를 보유하고있는 클래스에서.

그런 다음 블록에서이 작업을 수행합니다.

<?php if (!$this->isLoggedOnFacebook()): ?>
<div>
   <fb:login-button show-faces="true" perms="email" width="500" />
</div>
<?php endif ?>

그리고 FB JS 환경이 제대로 설정되어 있습니다 (제 생각에). 따라서 사용자는 팝업을 가져 와서 사이트를 승인합니다.

문제는 앱이 사용자 $ user에 의해 승인 된 후에도 항상 0입니다. $ facebook-> getUser ()는 항상 0을 반환하고 사용자의 얼굴을 나열합니다 (기록 된 사용자 포함).하지만 전화를 걸면 $ facebook-> api ( '/ me') 또는 무엇이든 잘못된 토큰 예외를 throw합니다.

나는이 문제를 보았다. 그러나 나는 해결책을 보지 못했다. 나는 잘 모른다. 문제가있는 곳에 아이디어가 부족합니다.

앱 URL 섹션과 사이트 도메인을 설정할 수있는 개발자 섹션의 Facebook 페이지에는 웹 사이트 탭이 있습니다.이 URL이 내 문제의 원인이라고 생각합니다.하지만 이러한 정보가 무엇인지 정확하게 알지 못합니다. 필드에 포함되어 있어야합니다.

해결법

  1. ==============================

    1.나는 동일한 문제가 있었고 SDK가 변수 $ _REQUEST를 사용하고 내 환경에서 $ _GET, $ _POST 및 $ _COOKIE 변수와 병합되지 않았기 때문에 그 점을 알아 냈습니다.

    나는 동일한 문제가 있었고 SDK가 변수 $ _REQUEST를 사용하고 내 환경에서 $ _GET, $ _POST 및 $ _COOKIE 변수와 병합되지 않았기 때문에 그 점을 알아 냈습니다.

    나는 그것이 PHP 버전에 달려 있다고 생각한다. 그래서 누군가가 쿠키를 사용하도록 설정 한 것이다.

    base_facebook.php에서이 코드를 발견했습니다.

    protected function getCode() {
        if (isset($_REQUEST['code'])) {
            if ($this->state !== null &&
                    isset($_REQUEST['state']) &&
                    $this->state === $_REQUEST['state']) {
    
                // CSRF state has done its job, so clear it
                $this->state = null;
                $this->clearPersistentData('state');
                return $_REQUEST['code'];
            } else {
                self::errorLog('CSRF state token does not match one provided.');
                return false;
            }
        }
    
        return false;
    }
    

    $ server_info 변수를 만들어서 아래에서 볼 수있는 것처럼 수정했습니다.

    protected function getCode() {
        $server_info = array_merge($_GET, $_POST, $_COOKIE);
    
        if (isset($server_info['code'])) {
            if ($this->state !== null &&
                    isset($server_info['state']) &&
                    $this->state === $server_info['state']) {
    
                // CSRF state has done its job, so clear it
                $this->state = null;
                $this->clearPersistentData('state');
                return $server_info['code'];
            } else {
                self::errorLog('CSRF state token does not match one provided.');
                return false;
            }
        }
    
        return false;
    }
    
  2. ==============================

    2.비슷한 문제가 발생했습니다. $ facebook-> getUser ()가 0을 반환하고 사용자가 실제로 로그인하지 않았을 때 유효한 사용자 ID를 반환하여 그래프 API 호출을 시도 할 때 치명적인 Oauth 오류가 발생했습니다. 나는이 문제를 마침내 풀었다. 그것이 올바른 방법인지는 모르겠지만 작동합니다. 다음은 코드입니다.

    비슷한 문제가 발생했습니다. $ facebook-> getUser ()가 0을 반환하고 사용자가 실제로 로그인하지 않았을 때 유효한 사용자 ID를 반환하여 그래프 API 호출을 시도 할 때 치명적인 Oauth 오류가 발생했습니다. 나는이 문제를 마침내 풀었다. 그것이 올바른 방법인지는 모르겠지만 작동합니다. 다음은 코드입니다.

    <?php
    include 'includes/php/facebook.php';
    $app_id = "APP_ID";
    $app_secret = "SECRET_KEY";
    $facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret,
        'cookie' => true
    ));
    
    $user = $facebook->getUser();
    
    if ($user <> '0' && $user <> '') { /*if valid user id i.e. neither 0 nor blank nor null*/
    try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) { /*sometimes it shows user id even if user in not logged in and it results in Oauth exception. In this case we will set it back to 0.*/
    error_log($e);
    $user = '0';
    }
    }
    if ($user <> '0' && $user <> '') { /*So now we will have a valid user id with a valid oauth access token and so the code will work fine.*/
    echo "UserId : " . $user;
    
    $params = array( 'next' => 'http://www.anujkumar.com' );
    echo "<p><a href='". $facebook->getLogoutUrl($params) . "'>Logout</a>";
    
    $user_profile = $facebook->api('/me');
    echo "<p>Name : " . $user_profile['name'];
    echo "<p>";
    print_r($user_profile);
    
    } else {/*If user id isn't present just redirect it to login url*/
    header("Location:{$facebook->getLoginUrl(array('req_perms' => 'email,offline_access'))}");
    }
    
    ?>
    
  3. ==============================

    3.이 블로그 게시물을 확인하십시오 : http://thinkdiff.net/facebook/new-javascript-sdk-oauth-2-0-based-fbconnect-tutorial/

    이 블로그 게시물을 확인하십시오 : http://thinkdiff.net/facebook/new-javascript-sdk-oauth-2-0-based-fbconnect-tutorial/

    새로운 JS SDK가 출시되었습니다. - https://developers.facebook.com/blog/post/525

  4. ==============================

    4.앱이 uri_fragment가 아닌 Query String에서 코드 매개 변수를 가져 오도록 설정해야합니다. 이는 facebook apps 페이지 apps> settings> permissions에서 설정할 수 있습니다.

    앱이 uri_fragment가 아닌 Query String에서 코드 매개 변수를 가져 오도록 설정해야합니다. 이는 facebook apps 페이지 apps> settings> permissions에서 설정할 수 있습니다.

    그게 나를 위해 $ facebook-> getLoginUrl ()을 사용하여 로그인 URL을 제공했다.

  5. ==============================

    5.구성 배열을 확인하십시오. 값을 설정할 때 적절한 문자열 캡슐 따옴표를 사용하고 있는지 확인하십시오.

    구성 배열을 확인하십시오. 값을 설정할 때 적절한 문자열 캡슐 따옴표를 사용하고 있는지 확인하십시오.

    $config = array();
    $config["appId"] = $APP_ID;
    $config["secret"] = $APP_SECRET;
    $config["fileUpload"] = false; // optional
    

    이 작동합니다.

    $config = array();
    $config[‘appId’] = 'YOUR_APP_ID';
    $config[‘secret’] = 'YOUR_APP_SECRET';
    $config[‘fileUpload’] = false; // optional
    

    이것은 웹 사이트 http://developers.facebook.com/docs/reference/php/에서 직접 복사 / 붙여 넣기이며 이상한 구불 구불 한 따옴표로 인해 작동하지 않습니다.

    긴 대답은 앱 비법이 유효한 값을 반환하지 않기 때문에 앱 서명의 "확인"을위한 해시가 올바른 체크에 나오지 않는다는 것입니다 (실제로는 아무 것도 반환하지 않습니다). 따라서 hash_hmac 함수는 다음과 같습니다. 제대로 일치하지 않는 잘못된 값을 반환하는 등 ...

  6. ==============================

    6.어떻게 든 내가 .crt 파일을 잃어 버렸기 때문에 base_facebook.php를 통해 디버깅 한 후 액세스 토큰이 영원히 유효하지 않습니다. https://github.com/facebook/facebook-php-sdk/blob/master/src/fb_ca_chain_bundle.crt에서 fb_ca_chain_bundle.crt를 사용할 수 있는지 확인하십시오.

    어떻게 든 내가 .crt 파일을 잃어 버렸기 때문에 base_facebook.php를 통해 디버깅 한 후 액세스 토큰이 영원히 유효하지 않습니다. https://github.com/facebook/facebook-php-sdk/blob/master/src/fb_ca_chain_bundle.crt에서 fb_ca_chain_bundle.crt를 사용할 수 있는지 확인하십시오.

  7. ==============================

    7.시간과 시간은 배수구 아래로. Stack Overflow 나 다른 사이트에서이 문제에 대한 게시물을 찾지 못했습니다. 나는 마침내 도서관 코드에 들어가서 정확히 어디에서 죽어 가고 있는지 알아 냈습니다.

    시간과 시간은 배수구 아래로. Stack Overflow 나 다른 사이트에서이 문제에 대한 게시물을 찾지 못했습니다. 나는 마침내 도서관 코드에 들어가서 정확히 어디에서 죽어 가고 있는지 알아 냈습니다.

    Windows 용 XAMPP를 사용하는 개발 컴퓨터에서 테스트 서버가 제대로 작동하는 동안 로그인을 계속했습니다. 예외가 발생했지만 숨겨진 것을 알게 된 후 base_facebook.php에 $ e-> getMessage ()를 넣어 SSL 오류가 발생했다. 다음 게시물 인 HTTPS 및 SSL3_GET_SERVER_CERTIFICATE : 인증서 확인에 실패했으며 CA는 정상이었습니다. 해결책을 찾았습니다.

    해결책:

    base_facebook.php에서 curl_exec ($ ch) 앞에 다음을 추가하십시오 :

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    

    프로덕션 시스템에서 위의 행을 원하지 않으므로 개발 모드에 있는지 여부를 판별하기 위해 사용하는 플래그를 위의 내용으로 감쌀 것입니다. 예를 들면 :

    if ( getenv( 'environment' ) === 'development' ) {
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    }
    
  8. ==============================

    8.나는 오랜 시간을 확인하고 시험했는데, 이제 그 이유를 발견했다.

    나는 오랜 시간을 확인하고 시험했는데, 이제 그 이유를 발견했다.

    개발자 앱에 로그인하여 설정 -> 고급 -> 마이그레이션 -> 오프라인 액세스 비준 -> 사용 중지를 선택하십시오.

    $ facebook-> getUser ()가 작동합니다.

    또 다른 한가지. 새로운 페이스 북 수업이있을 때 도메인을 더 잘 추가해야했습니다.

    $facebook = new Facebook(array(
    'appId' => APP_ID,//$app_id,
    'secret' => APP_SECRET,//$app_secret,
    'cookie' => true,
    'domain'=>'xxxdomain.com',
    ));
    $session = $facebook->getUser();    
    
  9. ==============================

    9.코드에서 다음을 시도해보십시오. true면 당신은 페이스 북으로 리디렉션됩니다 그럼 자신을 로그인하고 당신이 그때 가면 좋겠 PHP를 SDK의 새로운 라이브러리를 사용하여 기억해줬으면 좋겠 Logged

    코드에서 다음을 시도해보십시오. true면 당신은 페이스 북으로 리디렉션됩니다 그럼 자신을 로그인하고 당신이 그때 가면 좋겠 PHP를 SDK의 새로운 라이브러리를 사용하여 기억해줬으면 좋겠 Logged

    if(($facebook->getUser())==0)
    {
     header("Location:{$facebook->getLoginUrl(array('scope' => 'photo_upload,user_status,publish_stream,user_photos,manage_pages'))}");
     exit;
    }
    else {
    $accounts_list = $facebook->api('/me/accounts');
    echo "i am connected";
    }
    
  10. ==============================

    10.나는 같은 문제에 직면하면서 이것을 해결했다. developers.facebook.com/apps로 가서 앱으로 이동하십시오. EDIT APP 버튼 누르기

    나는 같은 문제에 직면하면서 이것을 해결했다. developers.facebook.com/apps로 가서 앱으로 이동하십시오. EDIT APP 버튼 누르기

    "Facebook에있는 앱"을 확인하고 캔버스 URL을 입력 한 경우 응용 프로그램은 페이스 북을 밖으로 작동하지 않습니다 apps.facebook.com/에서 작동합니다.

    나를 위해 일한이 수표를 지우십시오.

  11. ==============================

    11.

    <?php
    
    require 'facebook.php';
    
    // Create our application instance
    // (replace this with your appId and secret).
    $facebook = new Facebook(array(
      'appId'  => 'YOUR_APP_ID',
      'secret' => 'YOUR_APP_SECRET',
    ));
    
    // Get User ID
    $user = $facebook->getUser();
    
    // We may or may not have this data based 
    // on whether the user is logged in.
    // If we have a $user id here, it means we know 
    // the user is logged into
    // Facebook, but we don’t know if the access token is valid. An access
    // token is invalid if the user logged out of Facebook.
    
    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }
    
    // Login or logout url will be needed depending on current user state.
    if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
    } else {
      $loginUrl = $facebook->getLoginUrl();
    }
    
    // This call will always work since we are fetching public data.
    $naitik = $facebook->api('/naitik');
    
    ?>
    <!doctype html>
    <html xmlns:fb="http://www.facebook.com/2008/fbml">
      <head>
        <title>php-sdk</title>
        <style>
          body {
            font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
          }
          h1 a {
            text-decoration: none;
            color: #3b5998;
          }
          h1 a:hover {
            text-decoration: underline;
          }
        </style>
      </head>
      <body>
        <h1>php-sdk</h1>
    
        <?php if ($user): ?>
          <a href="<?php echo $logoutUrl; ?>">Logout</a>
        <?php else: ?>
          <div>
            Login using OAuth 2.0 handled by the PHP SDK:
            <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
          </div>
        <?php endif ?>
    
        <h3>PHP Session</h3>
        <pre><?php print_r($_SESSION); ?></pre>
    
        <?php if ($user): ?>
          <h3>You</h3>
          <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
    
          <h3>Your User Object (/me)</h3>
          <pre><?php print_r($user_profile); ?></pre>
        <?php else: ?>
          <strong><em>You are not Connected.</em></strong>
        <?php endif ?>
    
        <h3>Public profile of Naitik</h3>
        <img src="https://graph.facebook.com/naitik/picture">
        <?php echo $naitik['name']; ?>
      </body>
    </html>
    
  12. ==============================

    12.$ facebook-> getUser ()는 사용자가 앱을 인증하지 않으면 0을 반환합니다.

    $ facebook-> getUser ()는 사용자가 앱을 인증하지 않으면 0을 반환합니다.

    $ facebook-> getLoginUrl을 사용하여 앱을 인증 할 URL을 얻으십시오.

  13. ==============================

    13.나는 페이스 북 앱에서 똑같은 문제를 겪고 있었고, 2 일간의 머리카락으로 인해 좌절감을 느꼈다. getLoginUrl ()에서 redirect-uri와 관련된 문제로 판명되었습니다! 페이스 북을 통해 등록 된 앱 도메인과 일치하지 않으면 오류를 반환하고 사용자는 0 (기본 사용자 값)으로 반환됩니다.

    나는 페이스 북 앱에서 똑같은 문제를 겪고 있었고, 2 일간의 머리카락으로 인해 좌절감을 느꼈다. getLoginUrl ()에서 redirect-uri와 관련된 문제로 판명되었습니다! 페이스 북을 통해 등록 된 앱 도메인과 일치하지 않으면 오류를 반환하고 사용자는 0 (기본 사용자 값)으로 반환됩니다.

  14. ==============================

    14.나는 getUser ()와 같은 문제가 있었는데, IE 8에서 0을 반환했다. 나는 약간의 연구를 한 후에 해결책을 발견했다. 아래 링크를 클릭하십시오. 이것은 매력처럼 작동했습니다.

    나는 getUser ()와 같은 문제가 있었는데, IE 8에서 0을 반환했다. 나는 약간의 연구를 한 후에 해결책을 발견했다. 아래 링크를 클릭하십시오. 이것은 매력처럼 작동했습니다.

    http://www.andugo.com/facebook-php-sdk-getuser-return-0-value-on-ie/

  15. ==============================

    15.몇 시간이 지난 후, 내 서버에서 같은 문제가 발생한 이유는 다음과 같습니다. SSL을 사용하는 경우 포트 443이 차단되어 있지 않은지 확인하십시오! 나는 작년에 항구를 열었지 만, 내 웹 호스트가 어떻게 든 최근 재설정을 한 것으로 보입니다.

    몇 시간이 지난 후, 내 서버에서 같은 문제가 발생한 이유는 다음과 같습니다. SSL을 사용하는 경우 포트 443이 차단되어 있지 않은지 확인하십시오! 나는 작년에 항구를 열었지 만, 내 웹 호스트가 어떻게 든 최근 재설정을 한 것으로 보입니다.

  16. ==============================

    16.새 SDK 3.1.1 및 JS를 사용하는 경우 FB.init 루틴에 새 변수를 추가해야합니다.

    새 SDK 3.1.1 및 JS를 사용하는 경우 FB.init 루틴에 새 변수를 추가해야합니다.

    oauth : true 새로운 OATH 2.0 프로토콜을 사용하십시오! perms가 허용되지 않는 동안 로그인 버튼을 업데이트하십시오 perms 대신 scope를 사용하십시오

  17. ==============================

    17.getUser ()와 PHP-SDK는 _REQUEST와 같이 http 서버가 잘못 설정하여 전역을 삭제하는 경우 자동으로 실패합니다. 내가 잘못 구성된 nginx를 사용하고 코드 추적 후 ~ 3 시간 vhost 구성 변경을 통해이 문제를 해결했습니다.

    getUser ()와 PHP-SDK는 _REQUEST와 같이 http 서버가 잘못 설정하여 전역을 삭제하는 경우 자동으로 실패합니다. 내가 잘못 구성된 nginx를 사용하고 코드 추적 후 ~ 3 시간 vhost 구성 변경을 통해이 문제를 해결했습니다.

    솔루션에 대한 의견을 여기에 올렸습니다. https://github.com/facebook/php-sdk/issues/418#issuecomment-2193699

    나는 도움이되기를 바랍니다.

  18. ==============================

    18.facebook-> getUser ()는 로그인 한 사용자가 없을 때 0을 반환합니다. (https://developers.facebook.com/docs/reference/php/facebook-getUser/)

    facebook-> getUser ()는 로그인 한 사용자가 없을 때 0을 반환합니다. (https://developers.facebook.com/docs/reference/php/facebook-getUser/)

    이를 해결하기 위해 Facebook JS SDK는 페이스 북 PHP SDK와 함께 사용할 수있는 성공적인 로그인의 액세스 토큰을 제공합니다.

    아래 자바 스크립트는 Facebook 로그인이 이미 존재하고 Facebook 앱이 승인되었는지 여부를 확인합니다.

    FB.getLoginStatus(function($response) {
        if ($response.status === 'connected') {
            var uid = $response.authResponse.userID;
            var accessToken = $response.authResponse.accessToken;
            _accessServer(uid, accessToken);
    
        } else if ($response.status === 'not_authorized') {
            _loginPopup();
    
        } else {
            _loginPopup();
        }
    });
    

    _accessServer 함수는 다른 요청을 서버에 다시 열고 액세스 토큰을 보냅니다.

    _loginPopup 함수는 사용자가 응용 프로그램에 "액세스 허용"할 수 있도록 적절한 권한을 요청하는 Facebook 로그인 팝업을 열어야합니다.

    PHP 응용 프로그램은 액세스 토큰을 다시 Facebook API에 전달해야합니다.

    $facebook->setAccessToken($new_access_token);
    $uid = $facebook->getUser();
    

    https://developers.facebook.com/docs/reference/php/facebook-setAccessToken/

    희망이 도움이됩니다.

  19. ==============================

    19.이 줄을 추가하면 IE9에서이 문제가 해결되었습니다.

    이 줄을 추가하면 IE9에서이 문제가 해결되었습니다.

    header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); // This is the main cause to use on IE.
    
  20. ==============================

    20.이 질문이 사람과 관련이있는 경우 일을 시작하기 위해 상당한 시간을 할애하여 2 센트를 기부하고 싶습니다.

    이 질문이 사람과 관련이있는 경우 일을 시작하기 위해 상당한 시간을 할애하여 2 센트를 기부하고 싶습니다.

    우선, SDK가 PHP이든 JS이든 관계없이 사용자에게 적합한 SDK를 사용해보십시오. 본질적으로 둘 다 똑같은 일을합니다. 단지 JS가 좀 더 우아하게 처리 할 수 ​​있습니다 (팝업 대화 상자를 사용하고 그렇지 않은 경우). 거기에 다른 튜토리얼, 매뉴얼 및 예제가 많이 있습니다! 저에게 맞는 1 개를 찾으려면 일주일이 걸렸습니다. 실제로 사용할 수 있습니다. 사용하려는 SDK와 함께 작동하는 코드 조각을 찾았 으면 이제 코드를 특정 요구 사항으로 변경해야합니다.

    코드를 완성하고 테스트를 시작했습니다. localhost에서 코드를 실행하고 있는데 배열에서 결과를 얻지 못하고 있음을 알았습니다. 귀하의 질문에 대답하려면 : (하위) 도메인에 코드를 업로드하고 다시 시도하십시오. 내 코드는 항상 작동했지만 온라인으로 실행하지 않았기 때문에 작동하지 않았습니다. 이미 온라인으로 연결 한 경우 내 대답은 나에게 유용하지 않습니다.

    이런 종류의 작은 이야기가 실제로 그렇게하기위한 것이 아니라면 그것은 유감 스럽지만 사람들에게 도움이 될 수 있습니다.

    행운을 빕니다!

  21. ==============================

    21.

        if ($facebook->getUser()) {
           $userProfile = $facebook->api('/me');
           // do logic
        } else {
           $loginUrl = $facebook->getLoginUrl($params = array('scope' => SCOPE));
           header('Location:' . $loginUrl);
        }
    

    그게 내가 내 문제를 해결, 지금 나에게 추가 처리를위한 사용자 프로필의 세부 사항을 반환합니다. (그것은 그런 두통이었다)

  22. ==============================

    22.이것들은 좋은 제안이지만 나를 위해 일한 것은 Facebook 자체에 있습니다. 코드를 여러 번 리팩터링 한 후 Facebook의 구성에 문제가 있다는 것을 깨달았습니다. 다음 단계에 따라 문제가 해결되었습니다.

    이것들은 좋은 제안이지만 나를 위해 일한 것은 Facebook 자체에 있습니다. 코드를 여러 번 리팩터링 한 후 Facebook의 구성에 문제가 있다는 것을 깨달았습니다. 다음 단계에 따라 문제가 해결되었습니다.

    1.) Basic> App on Facebook ...에서 내가 원하는 것을 버리고 떠날 수는 있지만 선택을 취소했다.

    2.) 권한> 개인 정보 -> 공개로 설정

    권한> 인증 토큰 -> 쿼리 문자열로 설정

    3.) 고급 -> 인증> 응용 프로그램 유형 -> 웹에서

    세 번째 단계는 정말로 모든 것을 고쳐야하는 것이지, 왜 그렇게 확신 할 수 있는가?

  23. ==============================

    23.Session 변수와 쿠키를 사용하기 때문에 출력 전에이 Facebook API 함수 getUser를 호출해야합니다. 헤더를 올바르게 보내거나 읽을 수 없습니다.

    Session 변수와 쿠키를 사용하기 때문에 출력 전에이 Facebook API 함수 getUser를 호출해야합니다. 헤더를 올바르게 보내거나 읽을 수 없습니다.

  24. ==============================

    24.나는 또한 이것을 보면서 많은 시간을 보냈고 해결책을 찾았다. $ _SERVER [ 'QUERY_STRING']에 문제가있어 $ _REQUEST 배열에 설정해야 할 필요가있는 것 같습니다.

    나는 또한 이것을 보면서 많은 시간을 보냈고 해결책을 찾았다. $ _SERVER [ 'QUERY_STRING']에 문제가있어 $ _REQUEST 배열에 설정해야 할 필요가있는 것 같습니다.

    나는 codeigniter를 사용하여 라이브러리로드 위의 다음 코드가 작동하는 것을 발견했습니다.

    parse_str ($ _ SERVER [ 'QUERY_STRING'], $ _REQUEST);

        parse_str($_SERVER['QUERY_STRING'],$_REQUEST);
        $config = array(); 
        $config["appId"] = "63xxxxx39";
        $config["secret"] = "dexxxx3bf";
        $this->load->library('facebook',$config);
    
        $this->user = $user = $this->facebook->getUser();
        if ($user) {
    
            try {
                    // Proceed knowing you have a logged in user who's authenticated.
                    $user_profile = $this->facebook->api('/me');
                    //print_r($user_profile);exit;
            } catch (FacebookApiException $e) {
                    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
                    $user = null;
            }
            $logout = $this->facebook->getLogoutUrl();
            $this->fb_logout = $logout;
            $this->fb_user = $user_profile;
    
        } else {
            $login = $this->facebook->getLoginUrl(array("scope"=>"email","redirect_uri"=>"http://domain/login/login_fbmember/"));
            $this->fb_login = $login;
        }
    
    }
    
  25. ==============================

    25.이 문제는 정말 이상합니다. 문제점이 base_facebook.php의 static $ CURL_OPTS 배열이라는 것을 발견했습니다.

    이 문제는 정말 이상합니다. 문제점이 base_facebook.php의 static $ CURL_OPTS 배열이라는 것을 발견했습니다.

    이것을 다음과 같이 편집 해보십시오 :

      /**
       * Default options for curl.
       *
       * @var array
       */
      public static $CURL_OPTS = array(
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 60,
        CURLOPT_USERAGENT      => 'facebook-php-3.2',
      );
    

      /**
       * Default options for curl.
       *
       * @var array
       */
      public static $CURL_OPTS = array(
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 60,
        CURLOPT_USERAGENT      => 'facebook-php-3.2',
        CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4 
      );
    
  26. ==============================

    26.내 특정 문제에 대한 대답은 JS SDK와 PHP SDK의 버전간에 비 호환성이 있었기 때문에 사용 중이었고 업그레이드 한 것뿐입니다.

    내 특정 문제에 대한 대답은 JS SDK와 PHP SDK의 버전간에 비 호환성이 있었기 때문에 사용 중이었고 업그레이드 한 것뿐입니다.

    이 문제의 증상은 여러 가지로 인해 발생하는 경우 비슷합니다. 따라서이 페이지에서 제공되는 여러 답변을 검색 할 때 매우 능숙하게 수행 할 수 있습니다.

  27. from https://stackoverflow.com/questions/6790272/why-is-facebook-php-sdk-getuser-always-returning-0 by cc-by-sa and MIT license