Получение токена доступа с помощью Javascript API.

Это продолжение темы: Передача 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, а затем возвращает меня на домашнюю страницу моего сайта. После этого все, что он делает, это перенаправляет, а затем сразу же возвращается на домашнюю страницу. Ничего не публикуется.

Есть предложения?

5
задан Community 23 May 2017 в 12:31
поделиться