Abrufen von Access-Token Mithilfe der Javascript-API

Dies ist ein follow-up zu dem Thema: Vorbei an der signed_request zusammen mit der AJAX-Aufruf zu einer ActionMethod verziert mit CanvasAuthorize

Da ich nicht bekommen konnte den signed_request etwas anderes als null, ich dachte, ich würde die Authentifizierung des Benutzers auf der client-Seite, dann senden Sie das token für den Zugriff auf der server-Seite ASP.NET MVC) zusammen mit der AJAX-Aufruf. Ich kann leider nicht bekommen, die zu funktionieren! Hier ist mein Javascript-code (die habe ich aus der Dokumentation):

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");
            }
        }
    });
}

- Und das ist meine server-side-code:

    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);
    }
}

UPDATE:

Versuchte ich diese aber es hat nicht funktioniert für mich. Wenn ich auf den button für die erste Zeit, es leitet mich an die FB-login-Seite und dann gibt Sie mir zurück zu meiner Homepage dieser website. Danach werden alle es tut, ist, umzuleiten und dann wieder auf der Startseite rechts Weg. Nichts wird gepostet.

Irgendwelche Vorschläge?

Können Sie erklären, warum Sie so viel tun, benutzerdefinierte client-side javascript, um ein accesstoken, wenn die Facebook-javascript-client-Bibliothek funktioniert diese sehr gut, mit viel weniger code?
James: um Ehrlich zu sein, bin ich mir nicht sicher bin, was ich Tue. Ich bin sehr neu auf diese ganze Facebook app-Entwicklungs-Sache. Ich brauche nur an meine Website integrieren mit fb. Ich landete der Lektüre eine Menge von Dokumentation und verbringen viele Stunden und doch habe ich noch nicht viel getan, die Fortschritte... Es ist wirklich frustrierend, aber ich habe, um es getan. So, wie bekomme ich den access-token (der client, nicht die Anwendung die Zugriffstoken), die über die javascript-API?
James: ich habe aktualisiert mein code. Ich denke, das ist, was Sie beziehen?
ich möchte das gleiche zu tun, aber wenig zu verwirren, wo kann ich schreiben, server-side-code und wie Karte Facebook/share und die Methode teilen ?

InformationsquelleAutor Kassem | 2011-05-25

Schreibe einen Kommentar