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