FQL 错误 102 需要用户会话进行重复查询

2023-12-02

我有一个功能齐全的 FQL 查询,但是当第二次触发它时,我收到错误代码 102:需要用户会话

在我的应用程序上,我有一个自动完成朋友搜索功能。 我正在使用 jquery ui 自动完成功能和使用 AJAX 的动态源。

这是我的 PHP 函数:

function fb_buscarAmigosAutocomplete($term='',$app_user=false){
$facebook = new Facebook(array(
    'appId' => APP_ID,
    'secret'=> APP_SECRET 
));

$term=trim(strtolower($term));

//Buscar usuarios
try{
    $fql     =  "   SELECT uid,name,first_name,last_name,pic_square
                    FROM user
                    WHERE uid IN (
                        SELECT uid2
                        FROM friend
                        WHERE uid1=me()
                    )
                    AND strpos(lower(name),'".$term."') >=0
                ";
    if($app_user)
        $fql .= "   AND is_app_user";           

        $fql .= "   LIMIT 5";

        $param  =   array(
            'method'    => 'fql.query',
            'query'     => $fql,
            'callback'  => ''
        );
        $result   =   $facebook->api($param);


} catch(FacebookApiException $e){
    $error=$e->getMessage();
    var_dump($e);
}

if(!empty($result)) {
     $return['amigos']=$result;
     $return['valido']=true;
}else 
    $return['valido']=false;

return $return;
}

奇怪的是,这在过去 2-3 周内运行良好,突然就停止了。甚至“奇怪”的是,它在第​​一次触发时仍然有效,但第二次就不行了。由于这是异步的,我不明白如果是第一次、第二次、第三次、第四次触发它有什么区别。

有任何想法吗?

Edit 1通过进一步的研究,我想我找到了解决方法。 这可能是因为报告了一个错误here正如所讨论的here

我的解决方法是捕获我通过 Facebook 对象获得的第一个 access_token,然后将其附加到该类的每个实例,如下所示

第一次连接:

$facebook = new Facebook(array(
    'appId' => APP_ID,
    'secret'=> APP_SECRET 
));

$uid = $facebook->getUser();
if($uid){
  $_SESSION['access_token']=$facebook->getAccessToken();
} 

该 API 的任何其他用途:

$facebook = new Facebook(array(
    'appId' => APP_ID,
    'secret'=> APP_SECRET 
));
$facebook->setAccessToken($_SESSION['access_token']);
try{
    $user_info  = $facebook->api('/'.$uid.'?fields=id,name,first_name,last_name,email,picture');

} catch(FacebookApiException $e){
    $error = $e->getMessage();
}    

至此已经解决了问题

Edit 2
它没有...有时我的访问令牌是一个有效的字母数字+100个字符的字符串,并且这些时候它可以工作。

有时它只是一个 48 个数字字符串,但它不是......我真的被困在这里了


发生这种情况的原因可能是因为2012 年 12 月 5 日Facebook 推出的“重大变更”。具体来说:

OAuth 授权代码的新安全限制

我们只允许将授权码兑换为访问令牌一次,并要求在创建后 10 分钟内将其兑换为访问令牌。这符合 OAuth 2.0 规范,该规范从一开始就规定“授权代码必须是短暂的且一次性使用”。有关更多信息,请查看我们的身份验证文档。

这就是为什么您的第一个请求有效,而第二个请求无效。在第二次尝试时,SDK 会尝试将用户的身份验证代码交换为访问令牌。但由于这些变化,这只能完成一次。您的代码看起来应该可以正常工作,因为您明确保存然后设置access_token当您第一次收到它后。确保情况确实如此(确认 $_SESSION var 已正确保存/检索)。如果由于某种原因不是这样,您将看到 102 错误。

Cheers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FQL 错误 102 需要用户会话进行重复查询 的相关文章

  • header() 错误未在 php 中显示

    我写了一个PHP程序 我用session start and header 函数 我知道在向客户端发送任何内容之前应该使用此函数 没关系 但是为了测试 我向客户端发送了一条测试消息echo test 在使用 header 之前 但我没有收到
  • 根据数组计数填充复选框

    我是新来的php我已经使用了它的开发php array 我想填充checkboxes根据数组计数 为了做到这一点 我尝试了以下方式 它对我不起作用 有什么方法可以做到这一点 在我的例子中 数组计数 5 所以我相应地需要 5 个复选框
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • 通过jquery传递搜索参数

    我有一个表单 如果用户输入搜索查询 其参数应通过 jquery 传递 并在获取结果后将结果加载到 div 容器中 由于我不太熟悉 jquery 我该怎么做 html currently the data is being displayed
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • $_POST、$_GET 和 $_REQUEST 之间有什么区别?

    我对这些超级全局变量有点困惑 POST GET and REQUEST 在 PHP 中 在 PHP 中哪些场景需要使用这些变量 这三个变量的主要区别是什么 POST是在使用 application x www form urlencoded
  • TCPDF/PHP 和字体:大写数字(血统数字?旧样式?)

    我得到了一种特殊的字体 上面有这样的数字 例如 正如您在 3 上看到的 一些数字下降到基线以下 我想要实现的是 这些数字不会低于该线 并且看起来像这样 在 Word 中 可以在相同字体的字符设置中轻松设置 如何在 TCPDF 中呈现数字 我
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 如何在无法重启的服务器(Apache)上使用gettext?

    我在服务器故障上问了这个问题 https serverfault com questions 104224 how do you use gettext on server apache you cant restart但我没有得到任何回应
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • 如何从控制器访问 Zend Framework 应用程序的配置?

    我有一个基于 Zend 框架的应用程序快速开始 http framework zend com docs quickstart setup 我已经让演示工作起来 现在正在实例化一个新的模型类来完成一些实际工作 在我的控制器中 我想将配置参数
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 如何获取 URL 中未知的 $_GET 值的数组?

    我正在使用一个在线购物车 它接受订购的商品并通过 URL 将其唯一 ID 传递到 process php 页面 所以 URL 看起来像这样 process php code 1 231 code 2 532 code 3 342 Anoth
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt

随机推荐

  • JButton 列之间的间距

    我正在开发一个简单的 GUI 其中 JButton 的前两列和后两列之间有一个岛 代码如下 JPanel panel new JPanel new GridLayout 50 4 JScrollPane scrollable new JSc
  • 将自定义文本添加到 Woocommerce 中的变化价格

    我以为这很容易 但我被困住了 我想做的就是在产品页面上的变体价格后面添加 each 一词 我找到的解决方案将其添加到类别页面和产品页面的两个位置 代码是 Adds a text Each after price function chang
  • .split() 在 IE8 中无法按预期工作

    我使用以下方法从变量中包含的 URL 中提取变量 它在现代浏览器中工作正常 但在 IE8 中 它在第一个变量上失败 但在第二个变量上成功 var p http sagensundesign com height 400 width 300
  • R:“乘以”数据框的字符串列

    不知道这个操作叫什么 谷歌也没有帮助 假设我有两个像这样的简单数据框 df1 lt data frame factor1 c a b c df2 lt data frame factor2 c x y z gt df1 factor1 1
  • 使用 javax.faces.STATE_SAVING_METHOD 在客户端保存会话的含义

    我的第一个 JSF 页面抛出异常javax faces application ViewExpiredException 当我搜索时 我得到了解决我的问题的解决方案
  • R 将上个月的值添加为列

    我有一个数据表 其中包含按月列出的日期和价格 set seed 128 dat lt data table DATE c 2014 01 01 2014 02 01 2014 03 01 2014 04 01 2014 05 01 2014
  • 如何在 x86 汇编中移动两个浮点相乘的结果?

    我目前正在尝试将两个浮点数相乘 其中一个来自浮点向量 存储在 ebx 中的地址 并与我存储在 ecx 中的值相乘 我已经确认输入值是正确的 但是 例如 如果我将 32 乘以 1 则 EAX 中的值将更改为 00000000 而 EDX 中的
  • Visual Studio 和 DPI 问题

    我正在 Windows Vista 上使用 VS2008 开发 Windows 窗体应用程序 前几天我尝试在 Windows XP 上运行我的应用程序 GUI 上的所有内容都一团糟 我意识到我在 Windows Vista 上使用 120
  • 如何获取CloudKit的实际配额?

    我使用 Cloudkit 和私有数据库将一些文件存储到 iCloud 并在 iOS 和 OSX 之间同步 现在我想实现一些功能 用户可以在不离开应用程序并查看首选项的情况下查看 iCloud 中剩余的空间 但我找不到任何有关如何获取这些数据
  • Hibernate 多对多,没有第三个表

    我有两个表 Users 和 UserRole create table Users UserId serial not null UserName varchar 100 not null UserType varchar 15 not n
  • Android 和 JFileChooser

    我开发了一个桌面应用程序 允许用户从手机中提取图像 当我第一次开始这个项目时 我的 Android 正在运行 Gingerbread 当我通过 USB 将手机插入笔记本电脑时 它会显示为 具有可移动存储的设备 因此 JFileChooser
  • Excel 宏,在运行时插入国际有效的公式

    我有一个带有宏的 Excel 电子表格 可以插入条件格式 如下所示 Selection FormatConditions Add Type xlExpression Formula1 UND A3 lastName B3 firstName
  • Delphi 汇编函数返回长字符串

    我正在尝试学习 Delphi 中的内联汇编编程 为此我发现本文非常有帮助 现在我希望编写一个返回长字符串的汇编函数 特别是AnsiString 为了简单起见 我已经写了 function myfunc AnsiString asm eax
  • 如何使用过滤分支更改多个提交的提交作者?

    我正在使用在这里找到的这个脚本link编辑所有提交的作者信息 bin sh git filter branch env filter OLD EMAIL email protected CORRECT NAME Your Correct N
  • Webpack babel 6 ES6 装饰器

    我有一个用 ES6 编写的项目 使用 webpack 作为我的打包器 大多数转译工作正常 但是当我尝试在任何地方包含装饰器时 我收到此错误 Decorators are not supported yet in 6 x pending pr
  • 当人们说 css 中没有父选择器时,他们是什么意思?

    例如 假设我有一个如下所示的 HTML 我没有选择父元素 ul 吗 ul margin 50px ul test li hello li how are u 为了理解它们的含义 您需要理解什么选择意味着在CSS parent简单 By se
  • apache beam 2.7.0 在 utf-8 编码法语字符中崩溃

    我正在尝试将 csv 从 google 云平台的存储桶写入数据存储区 其中包含法语字符 口音但我有一条有关解码的错误消息 尝试从 进行编码和解码后latin 1 to utf 8 没有成功 使用unicode unicodedata 和编解
  • php从mysql输出到html表

    目前我正在开发一个网站正常运行时间搜索引擎 但是我遇到了一个愚蠢的问题 我想在表中输出多个 mysql 行 但是下面的代码会导致为找到的每一行创建一个单独的表 预先感谢您的帮助 searchTerm trim GET searchterm
  • Microsoft Graph SDK - 登录

    使用 MS Graph 是否可以只登录一次 目前 每当我调用 graphServiceClient 时 它都会要求我登录或选择登录的用户 有什么方法可以避免选择登录用户的过程吗 提前致谢 目前 这就是我初始化 graphService 的方
  • FQL 错误 102 需要用户会话进行重复查询

    我有一个功能齐全的 FQL 查询 但是当第二次触发它时 我收到错误代码 102 需要用户会话 在我的应用程序上 我有一个自动完成朋友搜索功能 我正在使用 jquery ui 自动完成功能和使用 AJAX 的动态源 这是我的 PHP 函数 f