gpt4 book ai didi

php - 如何使用 PHP 更新/扩展 facebook 访问 token ?

转载 作者:行者123 更新时间:2023-11-30 05:17:03 26 4
gpt4 key购买 nike

Facebook 已删除 offline_access token 功能,现在每当用户访问您的网站时都必须更新 token 以保持其活跃。

假设有人已经授予您网站访问权限,并且您为他们存储了一个 token 。您将使用什么代码与 Facebook 的 PHP 库来更新该 token ?

最佳答案

您可以通过以下方式扩展您的 token :

原始场景

  • 您的应用向用户请求权限
  • 您提示用户登录/授予权限
  • 您获得用户的 token (短期 token )并使用 grant_type=fb_exchange_token 通过 CURL 或其他方式交换 60 天的 token
  • 您保留 token

现在您拥有该 token ,可以在长达 60 天内用它做您想做的事。最多,因为用户可以更改密码,取消对应用程序的授权等,并且 token 将变得无效。每次用户访问您的页面时,您可以做些什么来扩展 token ,您可以检查他们是否通过 javascript 登录,如果是,则对您的服务器进行 ajax 调用以将现有 token 从 60 天开始延长今天。您可以调用任意多个电话,只有第一个电话有效。以下是我的做法:

  1. 在加载事件期间在您的页面某处添加如下内容:

     FB.getLoginStatus(function (response) {
    if (response.status === 'connected') {
    $.ajax({
    type: "POST",
    async: false,
    url: YOUR_URL,
    dataType: "text",
    data: {token : response.authResponse.accessToken }
    });
    }
    });
    //rest of jquery ajax call here

这将为用户获取一个新的客户端访问 token 并将其发送到服务器

  1. 然后服务器可以获取该 token 并将其交换为 60 天的 token

    $token_url = "https://graph.facebook.com/oauth/access_token?client_id=".FACEBOOK_CLIENT_ID."&client_secret=".FACEBOOK_SECRET."&grant_type=fb_exchange_token&fb_exchange_token=".$token;

    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($c, CURLOPT_URL, $token_url);
    $contents = curl_exec($c);
    $err = curl_getinfo($c,CURLINFO_HTTP_CODE);
    curl_close($c);

    $paramsfb = null;
    parse_str($contents, $paramsfb);

引用:

https://developers.facebook.com/roadmap/offline-access-removal/

如果用户在 60 天内返回您的站点,则只会延长 token 。如果没有,您将需要再次提示权限。

关于php - 如何使用 PHP 更新/扩展 facebook 访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021892/

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