gpt4 book ai didi

facebook 应用程序保留以前的用户详细信息

转载 作者:行者123 更新时间:2023-12-01 06:43:16 25 4
gpt4 key购买 nike

我在使用 facebook Iframe 应用程序时遇到问题。我的问题是,如果用户登录到应用程序,然后退出应用程序并且另一个(不同的)用户登录,则 $facebook->getUser() 返回前一个用户的 id。

我每次都尝试将用户发送到登录 url,但它仍然会发生,直到页面刷新一次(第一次登录到应用程序需要前一个用户 fb session ,然后就可以了)。

我能找到的唯一线索是,这是由于 $facebook->getUser() 方法中的持久数据而发生的......

也许有人可以帮助阐明这个问题,因为很多次我找不到解决方案......
谢谢!

最佳答案

您正在使用 facebook PHP SDK 正确。
在 facebook php sdk 中调用

$facebook->getUser() 方法它首先检查它是否是私有(private)变量,如果用户已经设置或没有这里是方法

   * Get the UID of the connected user, or 0
* if the Facebook user is not connected.
*
* @return string the UID if available.
*/
public function getUser() {
if ($this->user !== null) {
// we've already determined this and cached the value.
return $this->user;
}
return $this->user = $this->getUserFromAvailableData();
}

所以如果你是第一次打电话当然是 user变量是 null
所以现在它调用 getUserFromAvailableData();方法
   /** * Retrieve the signed request, either from a request parameter or,
* if not present, from a cookie.
*
* @return string the signed request, if available, or null otherwise.
*/
public function getSignedRequest() {
if (!$this->signedRequest) {
if (isset($_REQUEST['signed_request'])) {
$this->signedRequest = $this->parseSignedRequest(
$_REQUEST['signed_request']);
} else if (isset($_COOKIE[$this->getSignedRequestCookieName()])) {
$this->signedRequest = $this->parseSignedRequest(
$_COOKIE[$this->getSignedRequestCookieName()]);
}
}
return $this->signedRequest;
}

getSignedRequestCookieName()返回
protected function getSignedRequestCookieName() {
return 'fbsr_'.$this->getAppId();
}

所以现在 getSignedRequest()函数首先检查是否设置了签名请求,如果没有设置 它从 Cookie 获得签名请求

所以如果最后如果你不想获取以前的用户 ID,只需删除名为 ''fbsr_'+YourApplicationID' 的 cookie

关于facebook 应用程序保留以前的用户详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com