Facebook离线访问密钥和登录

时间:2009-09-18 15:56:07

标签: php codeigniter facebook

我已经在这方面工作了一段时间,我似乎无法让它发挥作用。这似乎是一个经常被问到但很少回答的问题。

我希望我的网站用户将他们的Facebook帐户与我的网站相关联。 所以他们可以在我的网站上看到他们的流e.t.c.

目前,每次他们登录我的网站时,他们都必须再次与Facebook联系。 我希望用户可以选择将offline_access提供给他们的数据,这样他们每次访问我的网站时都不必重新登录Facebook /重新连接我的网站。作为我的网站的一般点。

为此我知道我需要离线访问。 (https://developers.facebook.com/docs/authentication/)虽然从我的搜索来看,文档似乎有点亮(Facebook offline access step-by-step)。

我已经知道如何要求离线访问我只是不确定如何从中获取数据。

所以我的问题如下;

  1. 请求后,如何获取新的infinate Session密钥?
  2. 一旦我拥有它并将其存储在数据库中 - 如何使用它创建一个facebook用户而不是仅仅通过正常的受限访问密钥?
  3. 仅供参考。我正在使用PHP(codeigniter)和Eliot Haughin的Facebook connect library虽然你可以使用常规的php库给我代码,但我只是转换它

    非常感谢

3 个答案:

答案 0 :(得分:6)

右。经过一些搜索和探索代码之后。我想通了。

我已经为多个用户测试了它,并且在一周内测试它就像一个魅力。

获得offline_access权限后,存储会话密钥和用户ID。 (无论你想要什么。我将我的数据存储在我的数据库中)。

无限会话密钥看起来像这样df4175330aaddb9d50fd8f84-30000799 在“破折号”作为用户ID后的所有内容。

然后,下次调用API时,请添加以下代码行。

$ this-> fb-> set_user('Facebook用户ID','离线访问会话密钥',0); 注:零是它到期之前的时间量。 0 =从不。

我的库中的代码如下

$this->fb = new Facebook($this->_api_key, $this->_secret_key);     
//Query Database to see if user had enabled offline access.
//If So extract the userid and session key
$this->fb->set_user($fbuserid, $fbsess, 0);

在我的测试中,这完美无缺。 现在,我的用户可以登录我的网站,并在获得offline_access权限后自动拥有Facebook。它目前已经工作了一个星期没有问题。

我认为这就是一切。但如果我遗漏了任何东西,请告诉我。

答案 1 :(得分:1)

我一直在使用facebook connect,因为他们在F8上宣布它并在一年前进入测试阶段,我负责几个大型网站上我们的Facebook连接集成的后端,我花了在这个问题上有相当多的时间。

此处为a good post on the topic,此处为a bug filed 3 months ago

长话短说,facebook并没有积极支持这种类型的会话促销 - 是的,它是in the docs - 但它不起作用。这显然不是他们实际在内部测试的东西。

根据经验,让我告诉你:如果它不是一个记录良好的常用功能,你就不能依靠facebook来维护它。

答案 2 :(得分:0)

每次用户更改密码时密钥都会过期。这是写在文档上的。