如何安全地为用户提供带有PHP SDK的access_token?

时间:2011-11-28 22:10:19

标签: php facebook-php-sdk

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用getUser()确保在返回访问令牌之前拥有当前用户会话。 编辑:正如评论中所提到的,似乎这不适用于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;
}