Recuperar token de acesso usando a API Javascript
Este é um acompanhamento do tópico:Passando a solicitação_assinada juntamente com a chamada AJAX para um ActionMethod decorado com CanvasAuthorize
Desde que eu não consegui que o request_request fosse nulo, pensei em autenticar o usuário no lado do cliente e depois enviar o token de acesso ao lado do servidor (ASP.NET MVC) junto com a chamada AJAX. Infelizmente, também não consigo fazer isso funcionar! Aqui está o meu código Javascript (que obtive da documentação):
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");
}
}
});
}
E este é o meu código do servidor:
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<string, string>();
postArgs["message"] = message;
postArgs["link"] = link;
postArgs["picture"] = picture;
postArgs["name"] = name;
fb.Post("/me/feed", postArgs);
return Json(new {result = "success"}, JsonRequestBehavior.AllowGet);
}
}
ATUALIZAR
Eu tenteiist mas não funcionou para mim. Quando clico no botão pela primeira vez, ele me redireciona para a página de login do FB e depois volta para a página inicial do meu site. Depois disso, tudo o que faz é redirecionar e voltar à página inicial imediatamente. Nada é publicado.
Alguma sugestão