Php 是否期望通过基于重定向的身份验证接收的令牌是长寿命令牌

Php 是否期望通过基于重定向的身份验证接收的令牌是长寿命令牌,php,facebook,facebook-php-sdk,Php,Facebook,Facebook Php Sdk,我通过重定向到facebook身份验证页面$fb->getLoginUrl()实现了身份验证,当此流结束时,我将获得一个用户访问令牌 根据法律规定,这应该是一个短暂的生命,而我的生命将在今天之后的2个月内到期 这是一种预期的行为吗 如果是-在什么情况下您会交换代币 如果没有-我错过了什么 UPD 我刚刚创建了一个新的应用程序,新的用户访问令牌将过期1395567887(大约2个月)(来自令牌调试器的信息)取决于您正在实现的用例场景。 如果您正在使用应用程序,且令牌用于应用程序权限(例如,如果您使

我通过重定向到facebook身份验证页面
$fb->getLoginUrl()
实现了身份验证,当此流结束时,我将获得一个用户访问令牌

根据法律规定,这应该是一个短暂的生命,而我的生命将在今天之后的2个月内到期

这是一种预期的行为吗

如果是-在什么情况下您会交换代币

如果没有-我错过了什么

UPD


我刚刚创建了一个新的应用程序,新的用户访问令牌将过期
1395567887(大约2个月)
(来自令牌调试器的信息)

取决于您正在实现的用例场景。 如果您正在使用应用程序,且令牌用于应用程序权限(例如,如果您使用
getLoginUrl
对应用程序进行身份验证),则:

如果您的应用程序代表其用户发布,并且需要无过期时间的访问令牌进行发布, 您应该使用应用程序访问令牌。应用程序访问令牌已签名 使用你的应用程序机密,不会过期;如果 您重新设置了应用程序密钥/重置了应用程序密钥

编辑

默认情况下,我的所有应用程序都有一个2个月的访问令牌,这是FB中规定的

web上的访问令牌通常寿命约为两小时,但 将在需要时自动刷新

就像这里描述的:


服务器端流授予2个月的长寿命令牌

在使用facebook PHP-SDK进行身份验证后,默认情况下您无法获得长寿命访问令牌

您必须在代码块的某个地方使用/编写了以下API函数。除非您进行以下API调用,否则您将无法获得长寿命(2个月)令牌

您还可以参考令牌调试器: 检查令牌详细信息

编辑 我的代码如下所示

$user = $facebook->getUser();   

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $facebook->setExtendedAccessToken();  
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $statusUrl = $facebook->getLoginStatusUrl();
  $loginUrl = $facebook->getLoginUrl(array('scope' => 'read_stream, export_stream'));
}

如果您能观察到,我使用了setExtendedAccessToken如果在身份验证后找到用户详细信息setExtendedAccessToken是一个将临时令牌与长寿命令牌交换的调用。

“默认情况下,您无法获取长寿命访问令牌”--这就是我得到的。令牌调试器告诉令牌是一个长寿命的令牌。抱歉,不是回答,只是重定向到
$facebook->getLoginUrl()
。没有其他内容您是否检查了代码是否使用了setExtendedAccessToken()方法?我的代码没有使用它-整个身份验证过程非常简单,只需重定向到
$facebook->getLoginUrl()
没有其他内容。如果删除
setExtendedAccessToken
该令牌是否会成为短期令牌?它不是应用令牌,而是用户令牌。对不起,不是answer@zerkms另一个答案可能是你所需要的。你试过令牌调试器了吗?是的,这就是我获取令牌过期日期信息的地方。请看第一个方块:“短期访问令牌…”。假定交换是由开发人员显式完成的。我不这么做。“服务器端流授予一个2个月的长寿令牌”-有任何文档参考吗?@zerkms现在你肯定提到了stange。虽然现在我测试了大约60个应用程序(仅具有登录功能的活动),但我从未对长寿命令牌感兴趣,它们都会产生长寿命令牌。也许这和权限范围有关?
$user = $facebook->getUser();   

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $facebook->setExtendedAccessToken();  
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $statusUrl = $facebook->getLoginStatusUrl();
  $loginUrl = $facebook->getLoginUrl(array('scope' => 'read_stream, export_stream'));
}