gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:51:54 26 4
gpt4 key购买 nike

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

我在 Chrome 中有 2 个选项卡,一个是我的 Facebook 页面,另一个是 php 测试页面。这两个问题多次出现:

  • $facebook->getUser() 即使我登录后仍然返回 0。
  • $facebook->getUser() 即使我注销后仍然返回 ID。

我必须解决这个问题:尝试使用提供的 access_token 发起图形 API 请求,并检查是否 $response->error->type == "OAuthException" 以确保存在是否处于事件 session 状态。

有什么办法可以“稳定”地使用$facebook->getUser()吗?我已经搜索了很多,但还没有找到 php-sdk 3.1.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' => ...
    );
  2. 注销。似乎您的 PHP 服务器正在存储每个 session 的某些访问 token 值,因此即使您在浏览器中注销,您的服务器仍然拥有这些有效 token 。实际上,我不知道这是错误还是功能,但用户注销后它们不会被 Facebook 销毁。

    为了销毁这些 token ,我使用了这些:

    $facebook->destroySession();

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

关于php - $facebook -> getUser() 返回错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570219/

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