나는 이것과 관련된 모든 Stackoverflow 이전 질문을 확인했습니다. 그러나 그들 중 누구도 내 것과 같지 않습니다. 내 웹 사이트에 Facebook 로그인을 구현했습니다. 그 좋은 일. 하지만 문제는 로그인 후 페이지가 내 웹 사이트로 리디렉션하는 대신 Facebook 홈으로 리디렉션되는 것입니다.php - 로그인 후 Facebook 리디렉션이 작동하지 않습니다.
내 코드는 아래에 있습니다. 나는 페이스 북 개발자들의 공식 문서에서 많이 변하지 않았다.
login.php
<?php
session_start();
require_once __DIR__ . '/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '****',
'app_secret' => '****',
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes']; // optional
$loginUrl = $helper->getLoginUrl('http://example.com/login-callback.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
?>
로그인-callback.php
나도 같은 브라우저에서 내 페이스 북 계정에 이미 로그인, 나의 웹 사이트에서 로그인을 시도하고<?php
# login-callback.php
session_start();
require_once __DIR__ . '/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '****',
'app_secret' => '****',
'default_graph_version' => 'v2.2',
]);
$redirectloc = $_SERVER['HTTP_REFERER'];
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
// Logged in!
$_SESSION['facebook_access_token'] = (string) $accessToken;
header("Location:$redirectloc");
exit();
// Now you can redirect to another page and use the
// access token from $_SESSION['facebook_access_token']
} elseif ($helper->getError()) {
// The user denied the request
exit;
}
?>
그 완벽하게 작동합니다. 예 : login-callback.php의 header("Location:$redirectloc");
이 예상대로 작동합니다. 그것 login.php로 리디렉션.
지금 브라우저에서 내 Facebook 계정에서 로그 아웃 한 다음 내 웹 사이트에서 로그인하려고하면 정상적인 Facebook ID와 비밀번호를 묻습니다.
하지만 login.php로 리디렉션하지 않고 Facebook 홈 페이지로 리디렉션하는 사용자 아이디와 비밀번호를 입력 한 후.
글쎄, 리퍼러에는 페이스 북의 URL이 포함되어 있기 때문에. 필요한 것은 세션의 위치를 저장 한 다음 이전 위치를 호출하고 사용자를 다시 세션으로 리디렉션하는 것입니다. –
좋아요, 나는 리디렉션 코드와 그 코드를 하드 코딩했습니다. 감사. 이제 나는 문제가 어디 있는지 알고있다. 하지만 로그인 한 후 정확한 이전 페이지로 리디렉션하는 방법은 무엇입니까? – Arijit
@CharlotteDunois 답변으로 게시하여 받아 들일 수 있도록하십시오. – Arijit