正在发生的事情是用户A登录并提供应用程序访问他/她的数据的权限我们提取他的数据然后..
但问题是当另一个人使用同一台计算机登录他/她的帐户并授予权限时我们会获得用户A的数据而不是B ..
if(Request.Params["code"] != null)
{
Facebook.FacebookAPI api = new Facebook.FacebookAPI(GetAccessToken());
string me = api.Get("/me");
string meFriends = api.Get("/me/friends/");
}
我通过上面的代码访问用户信息..
我们应该怎么办?
答案 0 :(得分:2)
SDK将数据保存到会话中是一个已知问题。我对C#并不是100%肯定,但我猜它和PHP一样。 SDK(在PHP中)检查用户的签名请求是否在会话中可用:
public function getSignedRequest() {
if (!$this->signedRequest) {
if (isset($_REQUEST['signed_request'])) {
$this->signedRequest = $this->parseSignedRequest(
...
每次检查当前用户访问令牌的有效性时,我所做的就是。但有人提到这不是有效的(虽然我倾向于不同意:))。
简而言之,SDK不会检查有效性,并将会话中的数据作为第一个来源。这就是第二个用户拥有第一个用户数据的原因。