Facebook“粉丝门”与C#/ asp.net

时间:2011-09-19 18:55:57

标签: c# asp.net facebook

问题是1)Facebook看起来如此流畅,它允许开发人员与它进行交互(FBML,iFrame,不同版本的SDK)和2)我发现的一切都是PHP或Javascript我没有经验。我想做的事情看起来很简单,我无法相信没有一种简单的方法可以做到这一点。

我有什么:

  • 我使用Visual Studio 2010创建了一个简单的Web应用程序(asp.net/C#),它要求用户提供一些信息(名字,姓氏,电子邮件等)。我在那里有一个名为“提交”的按钮,当点击它时,将输入的数据保存到数据库中。我把这个托管在GoDaddy上(我知道,我知道......嘿)它的工作正常。没问题。

  • 我创建了一个使用iFrame thingy的“Facebook应用程序”,所以基本上我在Facebook上有一个新标签,显示我上面提到的我的网络应用程序。这也很好。选项卡在那里,Web应用程序就在那里,用户可以输入数据并将其保存到数据库中。没问题。

我想要的是什么:

  • 如果用户当前“喜欢”facebook实体,我希望网络应用程序(Facebook应用程序显示的内容)仅显示数据输入部分。我不想要求许可。我只是想知道他们是否是该公司的facebook“页面”的粉丝,它有这个应用程序。所以我需要两件事,如下面的伪代码所示:

第1部分(检查用户是否已经是粉丝):

If (user is fan)
{
    Show data entry area (unhide it)
}
else
{
    Show "Click the like button to see more options"
}

第2部分(听“喜欢”事件)

WhenLikeButtonPressed()
{
    Show data entry area (unhide it)
}

我见过关于“连接可见”,C#sdk,edge.create等的内容,但我无法做出正面或反面。我不介意放入Javascript或PHP如果有人可以请你准确地说,“Fan Gate for Dummies”的步骤。拜托,我在这里疯了: - (

1 个答案:

答案 0 :(得分:0)

关键是Facebook在用户访问页面时发布到您应用的signed_request。它包含用户是否喜欢该页面的数据。您不必担心在实际的选项卡FB页面上捕获边缘事件,因为当用户喜欢/不喜欢该页面时它会被重新加载。

您需要使用您的应用密码对已签名的请求进行解码才能获得相同的信息。有为PHP提供的示例,但我确信通过一些谷歌帮助,您可以找到asp.net/c#的signed_request的解码信息。

这是php解码供参考:

function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);

if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
  error_log('Unknown algorithm. Expected HMAC-SHA256');
  return null;
}

// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
  error_log('Bad Signed JSON signature!');
  return null;
}

return $data;
}

function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}

和链接https://developers.facebook.com/docs/authentication/signed_request/之类的信息将包含在页面变量