Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“脸谱网”;扇门“;使用C#/asp.net_C#_Asp.net_Facebook - Fatal编程技术网

“脸谱网”;扇门“;使用C#/asp.net

“脸谱网”;扇门“;使用C#/asp.net,c#,asp.net,facebook,C#,Asp.net,Facebook,问题在于:1)Facebook在允许开发者与之交互(FBML、iFrame、不同版本的SDK)方面似乎非常流畅;2)我发现的任何东西都是PHP或Javascript,我对此没有经验。我想做的事情似乎太简单了,我不敢相信没有一个简单的方法可以做到这一点 我所拥有的: 我使用VisualStudio2010创建了一个简单的web应用程序(asp.net/C#),它向用户询问一些信息(名字、姓氏、电子邮件等)。我在那里有一个叫做“提交”的按钮,当点击时,它会将输入的数据保存到数据库中。我在GoDad

问题在于:1)Facebook在允许开发者与之交互(FBML、iFrame、不同版本的SDK)方面似乎非常流畅;2)我发现的任何东西都是PHP或Javascript,我对此没有经验。我想做的事情似乎太简单了,我不敢相信没有一个简单的方法可以做到这一点

我所拥有的:

  • 我使用VisualStudio2010创建了一个简单的web应用程序(asp.net/C#),它向用户询问一些信息(名字、姓氏、电子邮件等)。我在那里有一个叫做“提交”的按钮,当点击时,它会将输入的数据保存到数据库中。我在GoDaddy上主持了这个节目(我知道,我知道…嘿),效果很好。没问题

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

我想要的是:

  • 我希望web应用程序(facebook应用程序显示的内容)仅在用户当前“喜欢”facebook实体时显示数据输入部分。我不想得到你的许可。我只是想知道他们是否是该公司facebook“页面”的粉丝。所以我需要两件事,如下面的伪代码所示:
第1部分(检查用户是否已经是风扇):

第二部分(聆听“喜欢”的事件)


我看过关于“连接可见”、C#sdk、edge.create等的东西,但我就是不太明白。如果有人能给我确切的“傻瓜扇门”步骤,我不介意输入Javascript或PHP。拜托,我快发疯了:-(

关键是用户访问页面时Facebook向你的应用程序发布的签名请求。它包含用户是否喜欢该页面的数据。当用户喜欢/不喜欢该页面时,它会被重新加载,你不必担心在实际的tab FB页面上捕获边缘事件

你需要用你的应用程序密码对签名请求进行解码,才能获得类似的信息。这里提供了一些PHP示例,但我相信,通过一些谷歌帮助,你可以找到asp.net/c的签名请求的解码信息

以下是供参考的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, '-_', '+/'));
}

类似信息的链接将包含在页面变量中

非常好,我不必担心捕捉类似事件。谢谢!我将尝试使用c#搜索处理签名请求。有时你只需要知道要查找什么。我花了3个小时才发现人们经常引用我的内容我试着像“fan gate”或“like gate”那样做;-)@conarch这个答案有C代码,你可以用它来解码
签名请求
参数:我的客户最终不想这样做,但Dustin的答案看起来很有希望,所以我会把它标记为答案。官方API中的签名请求解析器:可能重复?
WhenLikeButtonPressed()
{
    Show data entry area (unhide it)
}
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, '-_', '+/'));
}