的ActionMethod沿signed_request这是一个后续AJAX Call Does Not Trigger Action Method When Decorated With CanvasAuthorize传递与AJAX调用饰CanvasAuthorize
所以我发现下面的链接,似乎这是一个普遍的问题:
http://facebooksdk.codeplex.com/discussions/251878
http://facebooksdk.codeplex.com/discussions/250820
我试图遵循prabir的意见,但我无法得到它的工作...
这里是我的设置:
我在页面下面的代码片段,其中触发整个投递到Facebook的按钮位于:
@if (!string.IsNullOrEmpty(Request.Params["signed_request"]))
{
<input type="hidden" id="signedReq" value="@Request.Params["signed_request"]" />
}
然后,我有这个片段(script标签内内在同一页):
var signedRequest = $('#signedReq').val();
$('.facebookIcon').click(function() {
var thisItem = $(this).parent().parent();
var msg = thisItem.find('.compItemDescription').text();
var title = thisItem.find('.compareItemTitle').text();
var itemLink = thisItem.find('.compareItemTitle').attr('href');
var img = thisItem.find('img').first().attr('src');
postOnFacebook(msg, itemLink, img, title, signedRequest);
});
最后,外部js文件我有以下函数内部:
/*Facebook post item to wall*/
function postOnFacebook(msg, itemLink, pic, itemTitle, signedReq) {
console.log(signedReq);
var siteUrl = 'http://www.localhost:2732';
$.ajax({
url: '/Facebook/PostItem',
data: {
'message': msg,
'link': siteUrl + itemLink,
'picture': siteUrl + pic,
'name' : itemTitle,
'signed_request': signedReq
},
type: 'get',
success: function(data) {
if(data.result == "success") {
alert("item was posted on facebook");
}
}
});
}
但signedReq总是未定义的。我不确定我应该传递数据对象中的'signed_request'字段。有什么想法吗?
感谢您的回复。问题是Request.Params [“signed_request”]总是空的,因此没有任何东西被发送回服务器。我不知道为什么它应该首先填充,不应该用户登录到FB ** AFTER **他们点击了按钮,那时签名的请求应该填充?我想我在这里错过了一些东西......这真是令人困惑! :/ – Kassem 2011-05-21 08:23:57