Facebook PHP SDK 处理访问令牌

2023-11-25

我已经爬行了很多不同的答案,但我仍然对我应该如何处理 Facebook 感到有点困惑访问令牌。 我遇到的主要问题之一是浏览器中存储的信息。例如,我登录应用程序,令牌过期,除非清除浏览器中的 cookie/应用程序设置,否则我无法再次登录。

我偶然发现了这个线程:自offline_access弃用以来如何延长访问令牌的有效性

这向我展示了如何通过 php 创建扩展访问令牌。

我的问题是:

1.我需要将访问令牌存储在任何地方吗?

2.当访问令牌过期或失效时会发生什么?目前,当短期访问权限到期时,我的应用程序就会停止工作。

3.我应该有什么方法来处理它们以检查它们是否已过期? 我正在使用 php sdk 并且基本上使用了标准 if( $user )... 像这样:

require 'sdk/src/facebook.php';

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

  $user = $facebook->getUser();

  if( $user ){
    try{
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
    }
  }

  if (!$user){

    $params = array(
    'scope' => 'email',
    );

    $loginUrl = $facebook->getLoginUrl( $params );
        echo '<script type="text/javascript"> 
                window.open("'. $loginUrl .'", "_self"); 
                </script>';
                exit;

 } 
     if( $user ){

    $access_token = $facebook->getExtendedAccessToken();     

     $get_user_json = "https://graph.facebook.com/me?access_token=" 
       . $access_token;

// Rest of my code here...
}
  • 我还应该做些什么来处理令牌吗?

。我应该在页面之间传递访问令牌,还是可以在每个页面的顶部再次调用它,如下所示:

$facebook = new Facebook(array(
  'appId'  => 'XXXXXXXXXXXX',
  'secret' => 'XXXXXXXXXXXX',
  'redirect_uri' => 'http://localhost:8000/',
));
     $token = $facebook->getExtendedAccessToken();

让我们来解答一下您的问题:

我需要将访问令牌存储在任何地方吗?

这取决于您的应用程序。首先问问自己,当用户在操作时,您是否需要代表他执行操作?not存在(未登录到您的应用程序)?
如果答案是yes,那么您需要扩展用户令牌,这可以在拥有有效的用户会话时通过调用此方法使用 PHP-SDK 来完成:setExtendedAccessToken().

您还应该参考这个文档:扩展访问令牌

当访问令牌过期或失效时会发生什么? ... 有什么办法我应该处理它们来检查它们是否 已经过期了吗?

这就是catch代码中的子句会派上用场,而仅限 facebook 示例logs错误 (error_log($e);)你应该处理它!

Facebook 已经有一个关于此的教程:操作方法:处理过期的访问令牌.

您还应该参考错误表并相应地调整您的代码。

我还应该做些什么来处理令牌吗?

往上看。

我应该在页面之间传递访问令牌还是可以 在每个页面的顶部再次调用它

您不需要执行任何操作,因为 PHP-SDK 将为您处理令牌;您是否注意到您正在打电话:$user_profile = $facebook->api('/me');不附加用户access_token?

SDK 从其末尾添加它,因此您不必担心它。

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

Facebook PHP SDK 处理访问令牌 的相关文章

  • 获取给定日期时间集的每月第一个星期一

    我需要什么 我有一个特定的日期时间列表 我想获取每个日期时间的第一个星期一 例如 假设给定的日期时间是 2013 07 05 2013 08 05 2013 09 13 etc 我想获得所有这些日期时间的第一个星期一 以便输出结果 2013
  • Facebook“赞”按钮回调帮助

    我正在使用此代码进行类似 facebook 的回调 问题是 如果我调用 php 脚本 例如 有人可以看到我的 javascript 并运行此页面 甚至可以向其发送垃圾邮件或在没有先点赞的情况下使用它 我的想法是 我想为每个喜欢该页面的用户提
  • YUI压缩机或类似的PHP?

    我一直在我的测试服务器上使用 yuicompressor jar 来动态最小化已更改的 JavaScript 文件 现在我已经将网站部署到公共服务器上 我注意到服务器的策略禁止使用 exec 或其等效项 因此我不再执行 java 有没有一个
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • 使用 Facebook API 和 Objective C 来查找随机 Facebook 用户图像

    我正在构建一个返回随机 Facebook 个人资料图片的应用程序 到目前为止 我有下面的代码生成一个随机个人资料 ID 有时会返回真实的个人资料 但有时不会 只显示通用的蓝色 Facebook 面孔 当我在实际网站图形 API 上使用给定的
  • 如何使用 php DOM 获取 内的值?

    我如何使用 php DOM 获取 内的值 这是我的 xml 中的一些代码
  • Symfony 生成器形式、原则和 M:N 关系

    我有一个基本的 M N 设置 包含三个表 candidate position 和 Candidate position 这是 MySQL Workbench 的 ERD 屏幕截图 现在 我们继续讨论表单 在 symfony 生成器的默认世
  • 使用 Facebook 进行身份验证的网站的 REST API

    我们有一个网站 其中only登录网站并进行身份验证的方式是使用 Facebook 这不是我的选择 当您第一次登录 Facebook 时 系统会自动为您创建一个帐户 现在 我们希望为我们的网站创建一个 iPhone 应用程序 并为其他人使用我
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • Apache 子进程已退出,状态为 255

    经过大量的搜索 尝试 修复 等待和哭泣 在我放弃之前 我想为这个错误抓住最后的机会 我们正在奔跑Microsoft Windows Server 2012 Apache 2 4 6 Win64 OpenSSL 1 0 1e PHP 5 5
  • 使用 django-social-auth 登录后获取 Facebook 数据

    我们已经建立了一个应用程序 使用django social auth使用 Facebook 验证用户身份的扩展 身份验证工作正常 但我们不清楚如何从 Facebook 获取有用信息 好友列表 点赞等 看起来django facebook处理
  • localhost/live - 通过 HTTP_HOST 检测

    假设我在本地开发并在实时服务器上调试小东西 在我的代码中添加这样的内容是个好主意吗 is local strpos SERVER HTTP HOST localhost false define DEBUG is local 然后在设置内容
  • 在 PHP 中将整数转换为十六进制值

    如何将PHP中第一类中的数字转换为第二类中的数字 是否有内置函数来转换数字 也是我的标题 将整数转换为十六进制值 甚至正确 class Permission const READ 1 const UPDATE 2 const DELETE
  • 通过 post 使用 php 发送 XML

    我知道有很多类似的问题 但我尝试过摆弄所有的解决方案 但似乎无法使其发挥作用 我正在尝试将 xml 直接发布到 Web 服务并获得响应 从技术上讲 我正在尝试连接到freightquote com 您可以在右上角找到该文档this http
  • 将客户分配到 magento 的多个客户组

    您好 我想将多个组分配给特定客户 例如 Rajat 客户 属于 批发 零售商 电力 实际上我在上面看到了同样的话题每个客户有多个客户组 https stackoverflow com questions 6153011 multiple c
  • 使用 Imagick 动态图像创建/Apache 标头

    在将现有的稳定网站转移到新服务器时 我遇到了一些使用 Imagick 动态创建图像的代码的间歇性问题 该代码解析 GET 查询 例如 example com image php ipid 750123 r 0 w 750 h 1000 然后
  • 2 使用我的代码在数组中查询

    我使用滑块来显示我的 WordPress 精选文章 它选择一个自定义类别并返回一定数量的帖子 如何将显示的第一篇帖子设为自定义帖子 我可以直接在滑块代码中添加特定帖子的 ID吗使该帖子首先出现 然后是原始查询返回的其他内容 例如 在页面上
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • 管理产品页面自定义字段显示在购物车和结账中

    我在产品页面的常规设置选项卡上的 WooCommerce 管理中创建了一个自定义字段 以插入几天的制造时间 我想在购物车和结帐页面上每个产品名称上方显示此自定义字段值 这是我的代码 Insert a Custom Admin Field f

随机推荐

  • 在 r 中按日期和时间对数据帧进行排序和排名

    我有一个数据框如下 最初它只是两列 变量 时间戳 包含日期和时间 和 演员 我将 时间戳 变量分解为 日期 和 时间 然后将 时间 进一步分解为 小时 和 分钟 然后给出以下结构 dataf lt structure list hours
  • Java/GWT 和 Scala/Lift 哪个框架更好?

    我想开始一个新的 Web 应用程序项目 但我对 GWT Java 或 Lift Scala 这两个框架感到困惑 所以我想听听您的意见我选择哪一个 根据我的项目要求 两者都很好 那么根据框架比较 请告诉我哪个好 我发现 GWT 对于客户端来说
  • 如何创建tabindex组?

    我正在尝试创建 tabindex 组 其中按组中的选项卡它总是在该组中旋转 直到另一个组通过 javascript 或手动聚焦 问题 是否可以在没有 JavaScript 的情况下做到这一点 如果不能 我该如何实现这一点 Here is j
  • Android Activity.getParent() 总是返回 null

    我这里有这个小功能 public Activity getRootActivity Activity a this while a getParent null a a getParent return a 但 a getParent 总是
  • 是否可以定义中缀函数?

    是否可以在 CoffeeScript 或纯 JavaScript 中定义我自己的中缀函数 运算符 例如我想打电话 a foo b or a foo b 代替 a foo b 或者 当 foo 是全局函数时 foo a b 有什么办法可以做到
  • Jupyter 笔记本部分以法语显示

    我在用着Jupyter用于 Python 编程Windows 10一些文本被翻译成法语 但不是全部 这使得它有点烦人 有人知道如何更改显示语言吗 我无法在互联网上找到答案 因为每次我搜索 语言 时 它都会向我显示编程语言 R Python
  • 使用地图应用 iOS 生成步行路线

    截至目前 我使用以下代码成功地从我的应用程序中使用地图应用程序生成了路线 NSString formattedGroceryAddress NSString stringWithFormat EnhancedUIActionSheet ac
  • Android:清除活动堆栈

    我的申请中有多项活动 而且流程非常复杂 当我单击注销应用程序时 导航到登录屏幕 用户可以通过取消按钮退出 调用system exit 0 当我退出或后退按钮时 系统从堆栈中调用一个活动 当我到达登录屏幕时 如何清除堆栈中的所有活动 调用fi
  • ng-if 和 ng-show/ng-hide 有什么区别

    我试图理解之间的区别ng if and ng show ng hide 但它们在我看来是一样的 选择使用其中之一时我应该记住什么区别吗 ngIf The ngIf指示删除或重新创建基于表达式的 DOM 树的一部分 如果表达式分配给ngIf计
  • Chrome 中的滚动到视图

    I use var el document getElementById centd el scrollIntoView true 滚动到特定位置 在每个浏览器中它都工作正常 但在 Chrome 中 当页面加载时 它会滚动到该点 但在一两秒
  • 接收器停止接收奥利奥

    我了解服务等受到限制 因此我的接收器已停止在 Android Oreo 中工作 我有这段代码启动服务 Intent intent new Intent this MyService class intent putExtra Time lo
  • 从 Docker buildkit 获取容器 ID 以进行交互式调试

    众所周知 您可以运行docker commit针对失败的构建过程拍摄容器快照以用于调试目的 容器 ID 是从running in
  • 从本地文件更新 MySQL 表

    我的数据库中有一个表 我想更新本地文件上脱机的列 文件本身有两列 与表中的 ID 列相对应的 ID 以及 实际值 我已经能够使用创建新行 LOAD DATA INFILE file txt INTO TABLE table FIELDS T
  • 三星 Galaxy SIII (GLES) 中的噪声算法失败

    我正在努力让下一个简单的算法在 Samsung Galaxy SIII 中运行 float rand vec2 co return fract sin dot co xy vec2 12 9898 78 233 43758 5453 vec
  • Python:根据对象的属性对对象列表进行排序[重复]

    这个问题在这里已经有答案了 作为序言 我已经查看了与这个问题相关的帖子 但他们还没有完全回答我的问题 所以我只想知道如何通过两种方式根据对象的属性对对象列表进行排序 如果属性是字符串 按字母顺序排列 如果属性是整数 按数字顺序执行 这是我的
  • Eclipse 执行错误的 Java 文件

    我正在使用 Eclipse 来编写和测试 Java 我是一个初学者 所以我对Eclipse一无所知 当我尝试运行我刚刚编写的 Java 文件时 就会出现问题 它不执行打开的文件 而是执行我之前成功运行的文件 我在同一个默认包中有几个文件 包
  • Mac OS Mojave 上的 Ruby 2.4:找不到图像...与 openssl.bundle 相关

    所以我在 Mac OS Mojave 上将 Ruby 升级到了 2 4 9 我在安装 gem 时遇到问题 proj gem install google cloud vision ERROR Loading command install
  • Python - 用于将文本拆分为句子的正则表达式(句子标记化)[重复]

    这个问题在这里已经有答案了 我想从字符串中列出句子 然后将其打印出来 我不想使用 NLTK 来执行此操作 因此 它需要在句子末尾的句点上分割 而不是在小数点或缩写或名称标题上分割 或者如果句子有 com 这是对正则表达式的尝试 但不起作用
  • .NET 验证码 https

    我们已经开始使用 ASP NET recaptcha 控件 它运行良好 但我们的要求之一是所有出站流量都通过 HTTPS 我知道 recaptcha 支持 https 但不清楚在使用 ASP NET 插件选项时如何配置 或者即使它是可配置的
  • Facebook PHP SDK 处理访问令牌

    我已经爬行了很多不同的答案 但我仍然对我应该如何处理 Facebook 感到有点困惑访问令牌 我遇到的主要问题之一是浏览器中存储的信息 例如 我登录应用程序 令牌过期 除非清除浏览器中的 cookie 应用程序设置 否则我无法再次登录 我偶