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?
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Facebook Javascript SDK-Dokumentation ist hier: https://developers.facebook.com/docs/reference/javascript/
Gibt es mehrere Methoden, um das access token mit dem Javascript-SDK. Einige sind synchron, einige asynchrone, einige lassen Sie Sie abonnieren, um Ereignisse wie änderungen in der login-Status, manche bekommen das session-Objekt (enthält die access-token) in Reaktion auf Dinge wie die Aufforderung zur Eingabe der Berechtigungen.
Hier ist ein einfaches Beispiel:
Sobald Sie den access token erfasst der client-Seite können Sie per post in einem Formular oder ajax-call an den server.
Eine andere Sache zu prüfen ist Ihre Umgebung. Facebook Aussehen wird, um zu sehen, ob die anfragende domain diese api-Aufrufe übereinstimmungen mit deinen app-Einstellungen. Versuchen Sie es auf port 80, und mit einer realen Domäne mit DNS, die die Punkte auf Ihrem server (nicht localhost). Verwenden Sie DynDns oder einen anderen derartigen Dienst einrichten eines domain name und DNS-Eintrag, die Punkte an Ihre dev-box. Führen Sie IIS auf dem dev-box mit der app auf port 80 und die Firewall - /router-port-Weiterleitung eingerichtet, so dass Sie dienen können, Ihre Seiten auf port 80 auf eine echte domain, die mit Ihrem Facebook-app-Einstellungen.
response.session.access_token
aberresponse.authResponse.accessToken
jetzt.James gibt Es Antwort als null 🙁 Nicht arbeiten !
wahrscheinlich, weil der OAuth 2.0-änderungen an das response-Objekt. Ich aktualisierte es, um das neue Objekt verwenden
InformationsquelleAutor Pat James