얼마 전에 페이스 북에 가입 한 사람들을 어떻게 처리해야합니까? 귀하의 사이트로 오십시오. 계속 링크해야합니다 (페이스 북에 이미 로그인되어 있음을 감지했기 때문에). 그런 다음 페이지로 이동하면이 오류가 나타납니다.페이스 북 PHP SDK - OAuthException - OAuth2
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /var/www/html/lib/base_facebook.php on line 1039
당신이를 방지하기 위해 해야하는 방법을 이해하지? 이것은 access_token을 얻기 위해 Facebook에 돌려주는 서명 된 정보와 관련이 있습니까? 서명 된 정보가 만료 될 수있는 것 같습니다 (발행 된 날짜가 있음). 웹 사이트의 흐름에서이를 처리하는 올바른 방법은 무엇입니까?
는이 같은 코드를 작성 할 것으로 예상된다 :
이 대신<?php
$user = $facebook->getUser();
try {
// attempt to do a call just to see if you are going to have this issue
$profile = $facebook->api('/me');
} catch (Exception $e) {
$user = false;
}
if ($user) { ?>
<a href="start.php">Begin</a>
<?php } else { ?>
<fb:login-button scope="email" size="large">Connect</fb:login-button>
<?php } ?>
:
<?php
$user = $facebook->getUser();
if ($user) { ?>
<a href="start.php">Begin</a>
<?php } else { ?>
<fb:login-button scope="email" size="large">Connect</fb:login-button>
<?php } ?>
를 다시 페이스 북 SDK에서 $ 사용자를 얻기 만 쿠키가 당신에게 말할 것 같다. API 호출을 할 때 실제로 작동하는지는 알 수 없습니다.
UPDATE : 사용자가 내 사이트에 쿠키를 가지고 있지만, API 호출이 실패 할 때 그래서이 방법 내 유일한 문제는 ...이다 - 내가 그들을 연결 버튼을 보여줍니다. 사용자가 연결 버튼을 클릭하면 빠르게 나타나고 사라집니다. 방금 발생한 'auth.login'이 아니기 때문에 사용자는 JavaScript 리디렉션을 통해 start.php 페이지로 전송되지 않습니다. 어떻게 다른 사람들이 이것을 처리합니까? 나는 혼란 스럽다. 어떻게해야하는지 다른 결함이 있는지 말해주세요.
당신은 도메인 이름, APP_ID 및 app_secret가 (당신이 FB 사용자를 확인하는 사람이 존재하고 리디렉션되는 하나) 두 사이트에서 동일한 지 확인해 봤어? 그리고 첫 번째 사이트에서 페이스 북 개체를 초기화하는 데 사용 된 도메인은 다음 사이트에서 높은 수준의 도메인이어야합니다. –
이것은 모두 같은 사이트에 있습니다. 로그인 성공 후/(또는 index.php)에서 내 사용자를 start.php로 리디렉션하고 싶습니다. – BuddyJoe