我如何安全地给用户一个access_token与PHP SDK


How can I safely give the user an access_token with PHP SDK?

我打算使用$facebook->getAccessToken(),但查看代码,如果无法从getUserAccessToken()返回结果,它似乎会给用户应用程序访问令牌(通过getApplicationAccessToken())。如果我是对的,这意味着从getAccessToken()向用户传递访问令牌可以在某些情况下返回API秘密。

如何安全地获得访问令牌?

您可以使用getUser()来确保在返回访问令牌之前拥有当前用户会话。EDIT:正如评论中提到的,这似乎不能与Facebook的PHP客户端功能一起工作。用户的cookie可以包含用户ID,但也可以包含无效(过期)的code。PHP客户端将尝试用code交换用户访问令牌,但会失败。所以getUser()将返回一个用户ID,而getAccessToken()将返回一个应用程序访问令牌。getUser()不是检查用户访问令牌是否有效的有效方法。

如果你想要特别小心:Facebook应用令牌的所有形式的<app id>|<some hash, possibly your secret>。您可以确保返回的访问令牌没有这种格式:

$token = $fb->getAccessToken();
$tokenParts = explode('|', $token, 2);
if ($tokenParts[0] != <your_app_id>) {
    return $token;
} else {
    return null;
}