使用 Facebook PHP SDK 4,但没有存储会话

Posted

技术标签:

【中文标题】使用 Facebook PHP SDK 4,但没有存储会话【英文标题】:Using Facebook PHP SDK 4 but there's no session being stored 【发布时间】:2014-05-13 12:13:16 【问题描述】:

我从未使用过 Facebook SDK 4,我在这里查看了很多答案,但都没有成功。

我正在尝试使用 api 的 facebook 登录部分,但每次我从 facebook 重定向回来时,都没有存储任何会话。这是代码:

<?php
// I am using autoload just to make sure it was including the requested classes, it makes no difference if i include them separately the outcome is the same.

function __autoload($classname) 
    $filename = "../Facebook/". end(explode("\\",$classname)) .".php";
    include_once($filename);


use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

// start session
session_start();

// init app with app id and secret - 
FacebookSession::setDefaultApplication( '****','****' );

// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'http://dev.mydomain.co.uk/fb/index.php' );


try 
  $session = $helper->getSessionFromRedirect();
 catch(FacebookRequestException $ex) 
  // When Facebook returns an error
 catch(\Exception $ex) 
  // When validation fails or other local issues

if ($session) 
  // Logged in
    print('loggedin');
 else 
    print('no session');
    $loginUrl = $helper->getLoginUrl();
    ?>
    <a href="<?=$loginUrl?>">login</a>
    <?php

我已经替换了应用 ID 和密码,并且重定向 uri 是正确的,但我只是在这里替换了域。

它返回到我的登录页面,只是总是打印“无会话”。所以看起来$session = $helper-&gt;getSessionFromRedirect(); 没有做我需要做的事情。

我从 facebook 开发者网站获得此代码。

我尝试过的事情:

单独包含类文件而不是自动加载 将整个内容移动到一个单独的目录中,而 index.php 文件中没有其他任何内容 删除了我的 .htaccess 文件以确保它不会干扰 GET 请求。 我还尝试了一些不同的教程,即 http://metah.ch/blog/2014/05/facebook-sdk-4-0-0-for-php-a-working-sample-to-get-started/ 完全使用他们的代码(但替换了 app_id、app_sec 和 url 位) - 但我仍然没有返回任何会话

我有点茫然,所以如果有人有这方面的经验会有所帮助

【问题讨论】:

我有同样的问题,我还在研究。我希望明天我能解决这个问题。 【参考方案1】:

试试这个,我遇到了和你一样的问题: http://www.codeproject.com/Tips/777252/Integrating-Facebook-Account-into-a-Log-in-Session

【讨论】:

非常感谢,伙计!这也为我解决了问题,我认为这是因为应用程序域、网站 url 等需要正确匹配 我认为你应该在 $helper->getLoginUrl($params) 中添加一些范围 请将该链接中的重要内容复制到此问题中。

以上是关于使用 Facebook PHP SDK 4,但没有存储会话的主要内容,如果未能解决你的问题,请参考以下文章

Facebook PHP SDK 4.0 使用 Lumen 登录

无法在 Laravel 4 中使用 Facebook 的 PHP SDK 获取用户个人资料

未捕获的 OAuthException Facebook PHP SDK

Facebook SDK 4.0 AppInvite 没有收到任何通知

facebook PHP SDK 不能在不同的 PHP 版本中工作

在 laravel 中访问 facebook php sdk 4.0 和 Javascript sdk 上的 Token