Это продолжение темы: Передача signed_request вместе с вызовом AJAX в ActionMethod, оформленном с помощью CanvasAuthorize
Поскольку я не мог получить значение signed_request, отличное от нуля, я подумал, что 'd аутентифицировать пользователя на стороне клиента, а затем отправить токен доступа на сторону сервера (ASP.NET MVC) вместе с вызовом AJAX. К сожалению, я тоже не могу заставить это работать! Вот мой код Javascript (который я получил из документации):
function postOnFacebook(msg, itemLink, pic, itemTitle, signedReq) {
var siteUrl = 'http://www.localhost:2732';
var appID = 193005690721590;
if (window.location.hash.length == 0) {
var path = 'https://www.facebook.com/dialog/oauth?';
var queryParams = ['client_id=' + appID,
'redirect_uri=' + window.location,
'response_type=token',
'scope=offline_access'];
var query = queryParams.join('&');
var url = path + query;
window.open(url);
} else {
var accessToken = window.location.hash.substring(1);
var path = "https://graph.facebook.com/me?";
var queryParams = [accessToken];
var query = queryParams.join('&');
var url = path + query;
// use jsonp to call the graph
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
}
$.ajax({
url: '/Facebook/Share',
data: {
'message': msg,
'link': siteUrl + itemLink,
'picture': siteUrl + pic,
'name' : itemTitle,
'accessToken': accessToken
},
type: 'get',
success: function(data) {
if(data.result == "success") {
alert("item was posted on facebook");
}
}
});
}
А это мой код на стороне сервера:
public ActionResult Share(string message, string link, string picture, string name, string accessToken)
{
if (FacebookWebContext.Current.Session == null)
return RedirectToAction("Login");
var fb = new FacebookWebClient(accessToken);
var postArgs = new Dictionary();
postArgs["message"] = message;
postArgs["link"] = link;
postArgs["picture"] = picture;
postArgs["name"] = name;
fb.Post("/me/feed", postArgs);
return Json(new {result = "success"}, JsonRequestBehavior.AllowGet);
}
}
ОБНОВЛЕНИЕ:
Я пробовал это , но у меня это не сработало. Когда я нажимаю кнопку в первый раз, она перенаправляет меня на страницу входа в FB, а затем возвращает меня на домашнюю страницу моего сайта. После этого все, что он делает, это перенаправляет, а затем сразу же возвращается на домашнюю страницу. Ничего не публикуется.
Есть предложения?