$ facebook-> getUser()返回错误值? - php

问题与标题相同。我正在使用最新的php-sdk(v3.1.1)来操作服务器端身份验证流程。

我在Chrome中有2个标签,一个是我的Facebook页面,另一个是php测试页面。这两个问题经常发生:

即使登录,$facebook->getUser()仍返回0。
即使我注销,$facebook->getUser()仍会返回一个ID。

我必须解决此问题:尝试使用提供的access_token发起图API请求,并检查$response->error->type == "OAuthException"以确保是否存在活动会话。

有什么方法可以稳定地使用$facebook->getUser()吗?我已经通过SO搜索了很多东西,但是还没有找到php-sdk 3.1.1的最佳答案。

高度赞赏任何帮助。谢谢。

参考方案

登录。
按照documentation example of FB SDK,即使您已注销,getUser()也会返回userId,但是具有与FB帐户关联的cookie。
要检测用户是否登录,应该使用

$user = $facebook->getUser();
//Check Access token
if ($user) {
     try {
        $user_profile = $facebook->api('/me');
     } catch (FacebookApiException $e) {
        $user = null;
     }
} 
if ($user) { 
    //logged-in
} else {
    //not logged-in
}

要登录您的应用,请遵循以下网址,使用户登录您的应用,而不是在相邻选项卡上登录(请确保您根据应用执行的预期操作传递了scope):

$loginUrl = $facebook->getLoginUrl(
    'scope' => ...
);

登出。似乎您的PHP服务器在每个会话中存储了一些访问令牌值,因此即使您在浏览器中注销,服务器上的这些令牌仍然有效。实际上,我不知道这是错误还是功能,但是在用户注销后它们并没有被Facebook销毁。

为了销毁这些标记,我使用了这些:

$facebook->destroySession();

每当用户通过$facebook->getLogoutUrl()注销时,我都会调用它;

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP OOP概念付诸实践 - php

目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…

Facebook graph API,获取所有广告帐户 - php

Improve this question 我有Facebook应用程序。有已授予ads_management和ads_read权限的用户的用户ID和访问令牌。如何获得与该用户相关联的所有广告帐户的列表?看到php解决方案会很疯狂。谢谢! 参考方案 使用/adaccounts端点。如果您使用的是PHP SDK,则可以使用。我在这里使用me作为ID。您可以将其…

PHP:填写数组中的“空白” - php

我有一个php数组(通过表单中的复选框值获取-您知道复选框仅在未设置时显示在_POST变量中)。Array ( [2] => 0,2 [3] => 0,3 ) 我需要一种方法来“填补” 0-5之间的差距。所以上面看起来像(用'-1'填充空白。我尝试用填充有'-1'的数组array_merge(),但这没用。Array ( [0] => -1…