检查是否已使用PHP SDK 4.0登录到Facebook

让·弗朗索瓦·萨瓦德

我想检查在导航到index.php时是否已经登录到facebook,以便自动重定向到主页。

但是,我的代码仅在单击loggin链接后才会检查。

Facebook\FacebookSession::setDefaultApplication(Globals::FB_APP_ID, Globals::FB_APP_SECRET);

$helper = new Facebook\FacebookRedirectLoginHelper("myurl");

try {
        $session = $helper->getSessionFromRedirect();

} catch (FacebookRequestException $ex) {
    // When Facebook returns an error
} catch (Exception $ex) {
    // When validation fails or other local issues
}

// see if we have a session
if (isset($session)) {
    // graph api request for user data
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    // get response
    $graphObject = $response->getGraphObject();

    header("location:home.php");
} else {
    // show login url
    echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}

我检查了有关Facebook PHP SDK的其他线程,但与sdk 4.0无关。没什么对我有用。

我可以在会话中添加一个令牌,但是如果我在第一次访问之前就已经登录到Facebook,那么它将无法正常工作。如果我从Facebook上注销但没有从我的网站注销,这也会引起问题。

让·弗朗索瓦·萨瓦德

因为我发现这个问题经常被问到而没有答案,所以我决定与社区分享我的所作所为。

$session在我的代码变量包含的访问令牌可用于重新instanciating会议其他地方简单地做一个new FacebookSession('token')

考虑到这一点,首次登录时,我从中检索令牌$session并将其存储在中$_SESSION然后,我创建了一个简单的util函数,该函数首先检查是否$_SESSION设置变量,然后尝试使用存储的令牌实例化新的FacebookSession。如果该存储无效,则该会话不会实例化,那么我可以在util函数中检测到该存储,然后返回该用户是否实际登录。

请注意,当Facebook用户注销时,访问令牌无效。

登录网址+令牌存储:

FacebookSession::setDefaultApplication(Globals::FB_APP_ID, Globals::FB_APP_SECRET);


$helper = new Facebook\FacebookRedirectLoginHelper("http://localhost/PoubellesDeMerde/PoubellesDeMerde/index.php");

try {
        $session = $helper->getSessionFromRedirect();

} catch (FacebookRequestException $ex) {
    // When Facebook returns an error
} catch (Exception $ex) {
    // When validation fails or other local issues 
}

// see if we have a session
if (isset($session)) {
    // graph api request for user data
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();

    $_SESSION['token'] = $session->getToken();
} else {
    // show login url
    echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}

有用的功能:

public static function isLoggedIn()
{
    $id=0;       
    if(isset($_SESSION['token']))
    {
        $session = new FacebookSession($_SESSION['token']);

        $request = new FacebookRequest($session, 'GET', '/me');
        $response = $request->execute();

        $graphObject = $response->getGraphObject();

        $id = $graphObject->getProperty("id");                        
    } 

    return $id!=0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用js sdk登录到Facebook

来自分类Dev

使用Facebook iOS SDK登录到后端帐户

来自分类Dev

Facebook PHP SDK 4

来自分类Dev

登录Facebook SDK 4 Android

来自分类Dev

在Android中使用SDK 3.15登录到Facebook时获取用户名

来自分类Dev

使用sdk php登录Facebook

来自分类Dev

Facebook PHP SDK v4登录PHP致命错误类'Facebook \\ HttpClients \\ FacebookCurlHttpClient'

来自分类Dev

使用 Facebook-PHP-SDK 登录 Facebook

来自分类Dev

PHP cURL登录到Facebook

来自分类Dev

Facebook登录-JavaScript或PHP SDK

来自分类Dev

Facebook登录-JavaScript或PHP SDK

来自分类Dev

Facebook PHP SDK4-FQL请求

来自分类Dev

无法使用Facebook SDK登录

来自分类Dev

已登录的Facebook PHP SDK v4重定向

来自分类Dev

Facebook登录sdk php 4.0错误登录

来自分类Dev

facebook php sdk-facebook登录到我的网站成功..注销将使我退出facebook,但不退出我的网站

来自分类Dev

使用 Facebook SDK 登录无法在 Swift 4 上收到电子邮件

来自分类Dev

Facebook PHP SDK 4.0使用Lumen登录

来自分类Dev

通过PHP SDK登录Facebook,然后使用JS SDK

来自分类Dev

在Facebook PHP SDK 4中找不到类“ Facebook \ GraphObject”

来自分类Dev

Facebook登录-检测未使用PHP-SDK登录的用户

来自分类Dev

Facebook iOS SDK 4.x:更改用户登录

来自分类Dev

IOS Facebook SDK 4.01:我应该使用FBSDKAccessToken.currentAccessToken()来检查用户是否登录吗?

来自分类Dev

使用Laravel Socialite登录到Facebook

来自分类Dev

尝试使用VBA登录到Facebook

来自分类Dev

无法使用pidgin登录到Facebook帐户

来自分类Dev

无法使用pidgin登录到Facebook帐户

来自分类Dev

使用GNU Icecat登录到Facebook

来自分类Dev

登录后的Facebook PHP SDK验证

Related 相关文章

热门标签

归档