Facebook“粉丝之门”;用c# / asp.net

本文关键字:net asp 粉丝之门 Facebook | 更新日期: 2023-09-27 18:08:58

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

What I have:

  • 我使用Visual Studio 2010创建了一个简单的web应用程序(asp.net/C#),要求用户提供一些信息(名字,姓氏,电子邮件等)。我有一个按钮,叫做"提交",点击后,将输入的数据保存到数据库中。我把这个放在GoDaddy上(我知道,我知道……呵呵),它运行得很好。

  • 我创建了一个"Facebook应用程序",它使用iFrame的东西,所以基本上我在Facebook上有一个新的标签,显示我的web应用程序上面提到的。这也很好。标签在那里,网页应用在那里,用户可以输入数据,它被保存到数据库中。

我想要的:

  • 我希望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部分(监听like事件)

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

我看过一些关于"连接可见",c# sdk, edge的东西。创造等等,但我就是搞不懂。我不介意放入Javascript或PHP,如果有人能给我确切的,"扇门傻瓜"的步骤。拜托,我快疯了:-(

Facebook“粉丝之门”;用c# / asp.net

)

关键是当用户访问页面时Facebook向应用程序发布的signed_request。它包含用户是否喜欢该页面的数据。你不需要担心在一个实际的tab 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/类似的信息将包含在页面变量